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