@@ -6520,6 +6520,191 @@ $$ ) AS (case_statement agtype);
6520
6520
{"id": 844424930131970, "label": "connected_to", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {"k": 1, "id": 2}}::edge
6521
6521
(2 rows)
6522
6522
6523
+ --CASE chained expressions
6524
+ SELECT * FROM cypher('case_statement', $$
6525
+ MATCH (n)
6526
+ RETURN CASE
6527
+ WHEN null THEN 'should not return me'
6528
+ WHEN n.i = 1 = 1 THEN n
6529
+ ELSE 'none'
6530
+ END
6531
+ $$ ) AS (case_statement agtype);
6532
+ case_statement
6533
+ -------------------------------------------------------------------------------
6534
+ {"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6535
+ "none"
6536
+ "none"
6537
+ "none"
6538
+ "none"
6539
+ "none"
6540
+ (6 rows)
6541
+
6542
+ SELECT * FROM cypher('case_statement', $$
6543
+ MATCH (n)
6544
+ RETURN CASE
6545
+ WHEN null THEN 'should not return me'
6546
+ WHEN n.i = (1 = 1) THEN n
6547
+ ELSE 'none'
6548
+ END
6549
+ $$ ) AS (case_statement agtype);
6550
+ case_statement
6551
+ ----------------------------------------------------------------------------------------------
6552
+ "none"
6553
+ "none"
6554
+ "none"
6555
+ {"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6556
+ "none"
6557
+ "none"
6558
+ (6 rows)
6559
+
6560
+
6561
+ SELECT * FROM cypher('case_statement', $$
6562
+ MATCH (n)
6563
+ RETURN CASE n
6564
+ WHEN null THEN 'should not return me'
6565
+ WHEN n.i = 1 THEN n
6566
+ ELSE 'none'
6567
+ END
6568
+ $$ ) AS (case_statement agtype);
6569
+ case_statement
6570
+ ----------------
6571
+ "none"
6572
+ "none"
6573
+ "none"
6574
+ "none"
6575
+ "none"
6576
+ "none"
6577
+ (6 rows)
6578
+
6579
+ SELECT * FROM cypher('case_statement', $$
6580
+ MATCH (n)
6581
+ RETURN CASE n = 1
6582
+ WHEN null THEN 'should not return me'
6583
+ WHEN n.i = 1 = 1 THEN n
6584
+ ELSE 'none'
6585
+ END
6586
+ $$ ) AS (case_statement agtype);
6587
+ case_statement
6588
+ ------------------------------------------------------------------------------------------------
6589
+ "none"
6590
+ {"id": 281474976710658, "label": "", "properties": {"i": "a", "j": "b", "id": 2}}::vertex
6591
+ {"id": 281474976710659, "label": "", "properties": {"i": 0, "j": 1, "id": 3}}::vertex
6592
+ {"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6593
+ {"id": 281474976710661, "label": "", "properties": {"i": [], "j": [0, 1, 2], "id": 5}}::vertex
6594
+ {"id": 281474976710662, "label": "", "properties": {"i": {}, "j": {"i": 1}, "id": 6}}::vertex
6595
+ (6 rows)
6596
+
6597
+ SELECT * FROM cypher('case_statement', $$
6598
+ MATCH (n)
6599
+ RETURN CASE n = 1
6600
+ WHEN null THEN 'should not return me'
6601
+ WHEN n.i = (1 = 1) THEN n
6602
+ ELSE 'none'
6603
+ END
6604
+ $$ ) AS (case_statement agtype);
6605
+ case_statement
6606
+ ------------------------------------------------------------------------------------------------
6607
+ {"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6608
+ {"id": 281474976710658, "label": "", "properties": {"i": "a", "j": "b", "id": 2}}::vertex
6609
+ {"id": 281474976710659, "label": "", "properties": {"i": 0, "j": 1, "id": 3}}::vertex
6610
+ "none"
6611
+ {"id": 281474976710661, "label": "", "properties": {"i": [], "j": [0, 1, 2], "id": 5}}::vertex
6612
+ {"id": 281474976710662, "label": "", "properties": {"i": {}, "j": {"i": 1}, "id": 6}}::vertex
6613
+ (6 rows)
6614
+
6615
+ --should return n
6616
+ SELECT * FROM cypher('case_statement', $$
6617
+ MATCH (n)
6618
+ RETURN CASE n = 1
6619
+ WHEN null THEN 'should not return me'
6620
+ WHEN n = 1 = 1 THEN n
6621
+ ELSE 'none'
6622
+ END
6623
+ $$ ) AS (case_statement agtype);
6624
+ case_statement
6625
+ ------------------------------------------------------------------------------------------------
6626
+ {"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6627
+ {"id": 281474976710658, "label": "", "properties": {"i": "a", "j": "b", "id": 2}}::vertex
6628
+ {"id": 281474976710659, "label": "", "properties": {"i": 0, "j": 1, "id": 3}}::vertex
6629
+ {"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6630
+ {"id": 281474976710661, "label": "", "properties": {"i": [], "j": [0, 1, 2], "id": 5}}::vertex
6631
+ {"id": 281474976710662, "label": "", "properties": {"i": {}, "j": {"i": 1}, "id": 6}}::vertex
6632
+ (6 rows)
6633
+
6634
+ --chained expression in THEN
6635
+ SELECT * FROM cypher('case_statement', $$
6636
+ MATCH (n)
6637
+ RETURN CASE
6638
+ WHEN null THEN 'should not return me'
6639
+ WHEN n.i = 1 THEN n.i = 1 = 1
6640
+ ELSE 'none'
6641
+ END
6642
+ $$ ) AS (case_statement agtype);
6643
+ case_statement
6644
+ ----------------
6645
+ true
6646
+ "none"
6647
+ "none"
6648
+ "none"
6649
+ "none"
6650
+ "none"
6651
+ (6 rows)
6652
+
6653
+ --order of operations in then
6654
+ SELECT * FROM cypher('case_statement', $$
6655
+ MATCH (n)
6656
+ RETURN CASE n
6657
+ WHEN null THEN 'should not return me'
6658
+ WHEN n THEN (n.i = 1) = 1
6659
+ ELSE 'none'
6660
+ END
6661
+ $$ ) AS (case_statement agtype);
6662
+ case_statement
6663
+ ----------------
6664
+ false
6665
+ false
6666
+ false
6667
+ false
6668
+ false
6669
+ false
6670
+ (6 rows)
6671
+
6672
+ SELECT * FROM cypher('case_statement', $$
6673
+ MATCH (n)
6674
+ RETURN CASE n
6675
+ WHEN null THEN 'should not return me'
6676
+ WHEN n THEN n.i = (1 = 1)
6677
+ ELSE 'none'
6678
+ END
6679
+ $$ ) AS (case_statement agtype);
6680
+ case_statement
6681
+ ----------------
6682
+ false
6683
+ false
6684
+ false
6685
+ true
6686
+ false
6687
+ false
6688
+ (6 rows)
6689
+
6690
+ SELECT * FROM cypher('case_statement', $$
6691
+ MATCH (n)
6692
+ RETURN CASE n
6693
+ WHEN null THEN 'should not return me'
6694
+ WHEN n THEN n.i = (1 = 0)
6695
+ ELSE 'none'
6696
+ END
6697
+ $$ ) AS (case_statement agtype);
6698
+ case_statement
6699
+ ----------------
6700
+ false
6701
+ false
6702
+ false
6703
+ false
6704
+ false
6705
+ false
6706
+ (6 rows)
6707
+
6523
6708
--CASE with count()
6524
6709
--count(*)
6525
6710
SELECT * FROM cypher('case_statement', $$
0 commit comments