@@ -6457,6 +6457,191 @@ $$ ) AS (case_statement agtype);
6457
6457
{"id": 844424930131970, "label": "connected_to", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {"k": 1, "id": 2}}::edge
6458
6458
(2 rows)
6459
6459
6460
+ --CASE chained expressions
6461
+ SELECT * FROM cypher('case_statement', $$
6462
+ MATCH (n)
6463
+ RETURN CASE
6464
+ WHEN null THEN 'should not return me'
6465
+ WHEN n.i = 1 = 1 THEN n
6466
+ ELSE 'none'
6467
+ END
6468
+ $$ ) AS (case_statement agtype);
6469
+ case_statement
6470
+ -------------------------------------------------------------------------------
6471
+ {"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6472
+ "none"
6473
+ "none"
6474
+ "none"
6475
+ "none"
6476
+ "none"
6477
+ (6 rows)
6478
+
6479
+ SELECT * FROM cypher('case_statement', $$
6480
+ MATCH (n)
6481
+ RETURN CASE
6482
+ WHEN null THEN 'should not return me'
6483
+ WHEN n.i = (1 = 1) THEN n
6484
+ ELSE 'none'
6485
+ END
6486
+ $$ ) AS (case_statement agtype);
6487
+ case_statement
6488
+ ----------------------------------------------------------------------------------------------
6489
+ "none"
6490
+ "none"
6491
+ "none"
6492
+ {"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6493
+ "none"
6494
+ "none"
6495
+ (6 rows)
6496
+
6497
+
6498
+ SELECT * FROM cypher('case_statement', $$
6499
+ MATCH (n)
6500
+ RETURN CASE n
6501
+ WHEN null THEN 'should not return me'
6502
+ WHEN n.i = 1 THEN n
6503
+ ELSE 'none'
6504
+ END
6505
+ $$ ) AS (case_statement agtype);
6506
+ case_statement
6507
+ ----------------
6508
+ "none"
6509
+ "none"
6510
+ "none"
6511
+ "none"
6512
+ "none"
6513
+ "none"
6514
+ (6 rows)
6515
+
6516
+ SELECT * FROM cypher('case_statement', $$
6517
+ MATCH (n)
6518
+ RETURN CASE n = 1
6519
+ WHEN null THEN 'should not return me'
6520
+ WHEN n.i = 1 = 1 THEN n
6521
+ ELSE 'none'
6522
+ END
6523
+ $$ ) AS (case_statement agtype);
6524
+ case_statement
6525
+ ------------------------------------------------------------------------------------------------
6526
+ "none"
6527
+ {"id": 281474976710658, "label": "", "properties": {"i": "a", "j": "b", "id": 2}}::vertex
6528
+ {"id": 281474976710659, "label": "", "properties": {"i": 0, "j": 1, "id": 3}}::vertex
6529
+ {"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6530
+ {"id": 281474976710661, "label": "", "properties": {"i": [], "j": [0, 1, 2], "id": 5}}::vertex
6531
+ {"id": 281474976710662, "label": "", "properties": {"i": {}, "j": {"i": 1}, "id": 6}}::vertex
6532
+ (6 rows)
6533
+
6534
+ SELECT * FROM cypher('case_statement', $$
6535
+ MATCH (n)
6536
+ RETURN CASE n = 1
6537
+ WHEN null THEN 'should not return me'
6538
+ WHEN n.i = (1 = 1) THEN n
6539
+ ELSE 'none'
6540
+ END
6541
+ $$ ) AS (case_statement agtype);
6542
+ case_statement
6543
+ ------------------------------------------------------------------------------------------------
6544
+ {"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6545
+ {"id": 281474976710658, "label": "", "properties": {"i": "a", "j": "b", "id": 2}}::vertex
6546
+ {"id": 281474976710659, "label": "", "properties": {"i": 0, "j": 1, "id": 3}}::vertex
6547
+ "none"
6548
+ {"id": 281474976710661, "label": "", "properties": {"i": [], "j": [0, 1, 2], "id": 5}}::vertex
6549
+ {"id": 281474976710662, "label": "", "properties": {"i": {}, "j": {"i": 1}, "id": 6}}::vertex
6550
+ (6 rows)
6551
+
6552
+ --should return n
6553
+ SELECT * FROM cypher('case_statement', $$
6554
+ MATCH (n)
6555
+ RETURN CASE n = 1
6556
+ WHEN null THEN 'should not return me'
6557
+ WHEN n = 1 = 1 THEN n
6558
+ ELSE 'none'
6559
+ END
6560
+ $$ ) AS (case_statement agtype);
6561
+ case_statement
6562
+ ------------------------------------------------------------------------------------------------
6563
+ {"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6564
+ {"id": 281474976710658, "label": "", "properties": {"i": "a", "j": "b", "id": 2}}::vertex
6565
+ {"id": 281474976710659, "label": "", "properties": {"i": 0, "j": 1, "id": 3}}::vertex
6566
+ {"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6567
+ {"id": 281474976710661, "label": "", "properties": {"i": [], "j": [0, 1, 2], "id": 5}}::vertex
6568
+ {"id": 281474976710662, "label": "", "properties": {"i": {}, "j": {"i": 1}, "id": 6}}::vertex
6569
+ (6 rows)
6570
+
6571
+ --chained expression in THEN
6572
+ SELECT * FROM cypher('case_statement', $$
6573
+ MATCH (n)
6574
+ RETURN CASE
6575
+ WHEN null THEN 'should not return me'
6576
+ WHEN n.i = 1 THEN n.i = 1 = 1
6577
+ ELSE 'none'
6578
+ END
6579
+ $$ ) AS (case_statement agtype);
6580
+ case_statement
6581
+ ----------------
6582
+ true
6583
+ "none"
6584
+ "none"
6585
+ "none"
6586
+ "none"
6587
+ "none"
6588
+ (6 rows)
6589
+
6590
+ --order of operations in then
6591
+ SELECT * FROM cypher('case_statement', $$
6592
+ MATCH (n)
6593
+ RETURN CASE n
6594
+ WHEN null THEN 'should not return me'
6595
+ WHEN n THEN (n.i = 1) = 1
6596
+ ELSE 'none'
6597
+ END
6598
+ $$ ) AS (case_statement agtype);
6599
+ case_statement
6600
+ ----------------
6601
+ false
6602
+ false
6603
+ false
6604
+ false
6605
+ false
6606
+ false
6607
+ (6 rows)
6608
+
6609
+ SELECT * FROM cypher('case_statement', $$
6610
+ MATCH (n)
6611
+ RETURN CASE n
6612
+ WHEN null THEN 'should not return me'
6613
+ WHEN n THEN n.i = (1 = 1)
6614
+ ELSE 'none'
6615
+ END
6616
+ $$ ) AS (case_statement agtype);
6617
+ case_statement
6618
+ ----------------
6619
+ false
6620
+ false
6621
+ false
6622
+ true
6623
+ false
6624
+ false
6625
+ (6 rows)
6626
+
6627
+ SELECT * FROM cypher('case_statement', $$
6628
+ MATCH (n)
6629
+ RETURN CASE n
6630
+ WHEN null THEN 'should not return me'
6631
+ WHEN n THEN n.i = (1 = 0)
6632
+ ELSE 'none'
6633
+ END
6634
+ $$ ) AS (case_statement agtype);
6635
+ case_statement
6636
+ ----------------
6637
+ false
6638
+ false
6639
+ false
6640
+ false
6641
+ false
6642
+ false
6643
+ (6 rows)
6644
+
6460
6645
--CASE with count()
6461
6646
--count(*)
6462
6647
SELECT * FROM cypher('case_statement', $$
0 commit comments