@@ -7,6 +7,10 @@ package org.opensearch.flint.spark.ppl
7
7
8
8
import java .util
9
9
10
+ import org .opensearch .sql .expression .function .BuiltinFunctionName .JSON_APPEND
11
+ import org .opensearch .sql .expression .function .BuiltinFunctionName .JSON_DELETE
12
+ import org .opensearch .sql .expression .function .BuiltinFunctionName .JSON_EXTEND
13
+ import org .opensearch .sql .expression .function .BuiltinFunctionName .JSON_SET
10
14
import org .opensearch .sql .expression .function .SerializableUdf .visit
11
15
12
16
import org .apache .spark .sql .{AnalysisException , QueryTest , Row }
@@ -408,7 +412,7 @@ class FlintSparkPPLJsonFunctionITSuite
408
412
val jsonObjExp =
409
413
Literal (" {\" account_number\" :1,\" balance\" :39225,\" age\" :32,\" gender\" :\" M\" }" )
410
414
val jsonFunc =
411
- Alias (visit(" json_delete " , util.List .of(jsonObjExp, keysExpression)), " result" )()
415
+ Alias (visit(JSON_DELETE , util.List .of(jsonObjExp, keysExpression)), " result" )()
412
416
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
413
417
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
414
418
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -429,7 +433,7 @@ class FlintSparkPPLJsonFunctionITSuite
429
433
val jsonObjExp =
430
434
Literal (" {\" account_number\" :1,\" balance\" :39225,\" age\" :32,\" gender\" :\" M\" }" )
431
435
val jsonFunc =
432
- Alias (visit(" json_delete " , util.List .of(jsonObjExp, keysExpression)), " result" )()
436
+ Alias (visit(JSON_DELETE , util.List .of(jsonObjExp, keysExpression)), " result" )()
433
437
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
434
438
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
435
439
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -450,7 +454,7 @@ class FlintSparkPPLJsonFunctionITSuite
450
454
val jsonObjExp =
451
455
Literal (" {\" f1\" :\" abc\" ,\" f2\" :{\" f3\" :\" a\" ,\" f4\" :\" b\" }}" )
452
456
val jsonFunc =
453
- Alias (visit(" json_delete " , util.List .of(jsonObjExp, keysExpression)), " result" )()
457
+ Alias (visit(JSON_DELETE , util.List .of(jsonObjExp, keysExpression)), " result" )()
454
458
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
455
459
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
456
460
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -475,7 +479,7 @@ class FlintSparkPPLJsonFunctionITSuite
475
479
Literal (
476
480
" {\" teacher\" :\" Alice\" ,\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
477
481
val jsonFunc =
478
- Alias (visit(" json_delete " , util.List .of(jsonObjExp, keysExpression)), " result" )()
482
+ Alias (visit(JSON_DELETE , util.List .of(jsonObjExp, keysExpression)), " result" )()
479
483
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
480
484
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
481
485
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -500,7 +504,7 @@ class FlintSparkPPLJsonFunctionITSuite
500
504
Literal (
501
505
" {\" teacher\" :\" Alice\" ,\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
502
506
val jsonFunc =
503
- Alias (visit(" json_delete " , util.List .of(jsonObjExp, keysExpression)), " result" )()
507
+ Alias (visit(JSON_DELETE , util.List .of(jsonObjExp, keysExpression)), " result" )()
504
508
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
505
509
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
506
510
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -525,7 +529,7 @@ class FlintSparkPPLJsonFunctionITSuite
525
529
val jsonObjExp =
526
530
Literal (" {\" account_number\" :1,\" balance\" :39225,\" age\" :32,\" gender\" :\" M\" }" )
527
531
val jsonFunc =
528
- Alias (visit(" json_set " , util.List .of(jsonObjExp, keysExpression)), " result" )()
532
+ Alias (visit(JSON_SET , util.List .of(jsonObjExp, keysExpression)), " result" )()
529
533
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
530
534
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
531
535
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -552,7 +556,7 @@ class FlintSparkPPLJsonFunctionITSuite
552
556
val jsonObjExp =
553
557
Literal (" {\" account_number\" :1,\" balance\" :39225,\" age\" :32,\" gender\" :\" M\" }" )
554
558
val jsonFunc =
555
- Alias (visit(" json_set " , util.List .of(jsonObjExp, keysExpression)), " result" )()
559
+ Alias (visit(JSON_SET , util.List .of(jsonObjExp, keysExpression)), " result" )()
556
560
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
557
561
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
558
562
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -573,7 +577,7 @@ class FlintSparkPPLJsonFunctionITSuite
573
577
val jsonObjExp =
574
578
Literal (" {\" f1\" :\" abc\" ,\" f2\" :{\" f3\" :\" a\" ,\" f4\" :\" b\" }}" )
575
579
val jsonFunc =
576
- Alias (visit(" json_set " , util.List .of(jsonObjExp, keysExpression)), " result" )()
580
+ Alias (visit(JSON_SET , util.List .of(jsonObjExp, keysExpression)), " result" )()
577
581
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
578
582
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
579
583
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -598,7 +602,7 @@ class FlintSparkPPLJsonFunctionITSuite
598
602
Literal (
599
603
" {\" teacher\" :\" Alice\" ,\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
600
604
val jsonFunc =
601
- Alias (visit(" json_set " , util.List .of(jsonObjExp, keysExpression)), " result" )()
605
+ Alias (visit(JSON_SET , util.List .of(jsonObjExp, keysExpression)), " result" )()
602
606
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
603
607
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
604
608
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -625,7 +629,7 @@ class FlintSparkPPLJsonFunctionITSuite
625
629
Literal (
626
630
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
627
631
val jsonFunc =
628
- Alias (visit(" json_append " , util.List .of(jsonObjExp, keysExpression)), " result" )()
632
+ Alias (visit(JSON_APPEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
629
633
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
630
634
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
631
635
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -653,7 +657,7 @@ class FlintSparkPPLJsonFunctionITSuite
653
657
Literal (
654
658
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
655
659
val jsonFunc =
656
- Alias (visit(" json_append " , util.List .of(jsonObjExp, keysExpression)), " result" )()
660
+ Alias (visit(JSON_APPEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
657
661
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
658
662
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
659
663
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -681,7 +685,7 @@ class FlintSparkPPLJsonFunctionITSuite
681
685
Literal (
682
686
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
683
687
val jsonFunc =
684
- Alias (visit(" json_append " , util.List .of(jsonObjExp, keysExpression)), " result" )()
688
+ Alias (visit(JSON_APPEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
685
689
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
686
690
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
687
691
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -709,7 +713,7 @@ class FlintSparkPPLJsonFunctionITSuite
709
713
Literal (
710
714
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
711
715
val jsonFunc =
712
- Alias (visit(" json_append " , util.List .of(jsonObjExp, keysExpression)), " result" )()
716
+ Alias (visit(JSON_APPEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
713
717
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
714
718
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
715
719
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -737,7 +741,7 @@ class FlintSparkPPLJsonFunctionITSuite
737
741
Literal (
738
742
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
739
743
val jsonFunc =
740
- Alias (visit(" json_append " , util.List .of(jsonObjExp, keysExpression)), " result" )()
744
+ Alias (visit(JSON_APPEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
741
745
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
742
746
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
743
747
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -765,7 +769,7 @@ class FlintSparkPPLJsonFunctionITSuite
765
769
Literal (
766
770
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
767
771
val jsonFunc =
768
- Alias (visit(" json_append " , util.List .of(jsonObjExp, keysExpression)), " result" )()
772
+ Alias (visit(JSON_APPEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
769
773
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
770
774
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
771
775
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -797,7 +801,7 @@ class FlintSparkPPLJsonFunctionITSuite
797
801
Literal (
798
802
" {\" school\" :{\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}}" )
799
803
val jsonFunc =
800
- Alias (visit(" json_append " , util.List .of(jsonObjExp, keysExpression)), " result" )()
804
+ Alias (visit(JSON_APPEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
801
805
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
802
806
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
803
807
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -824,7 +828,7 @@ class FlintSparkPPLJsonFunctionITSuite
824
828
Literal (
825
829
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
826
830
val jsonFunc =
827
- Alias (visit(" json_extend " , util.List .of(jsonObjExp, keysExpression)), " result" )()
831
+ Alias (visit(JSON_EXTEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
828
832
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
829
833
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
830
834
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -849,7 +853,7 @@ class FlintSparkPPLJsonFunctionITSuite
849
853
Literal (
850
854
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
851
855
val jsonFunc =
852
- Alias (visit(" json_extend " , util.List .of(jsonObjExp, keysExpression)), " result" )()
856
+ Alias (visit(JSON_EXTEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
853
857
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
854
858
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
855
859
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -877,7 +881,7 @@ class FlintSparkPPLJsonFunctionITSuite
877
881
Literal (
878
882
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
879
883
val jsonFunc =
880
- Alias (visit(" json_extend " , util.List .of(jsonObjExp, keysExpression)), " result" )()
884
+ Alias (visit(JSON_EXTEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
881
885
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
882
886
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
883
887
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -905,7 +909,7 @@ class FlintSparkPPLJsonFunctionITSuite
905
909
Literal (
906
910
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
907
911
val jsonFunc =
908
- Alias (visit(" json_extend " , util.List .of(jsonObjExp, keysExpression)), " result" )()
912
+ Alias (visit(JSON_EXTEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
909
913
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
910
914
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
911
915
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -933,7 +937,7 @@ class FlintSparkPPLJsonFunctionITSuite
933
937
Literal (
934
938
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
935
939
val jsonFunc =
936
- Alias (visit(" json_extend " , util.List .of(jsonObjExp, keysExpression)), " result" )()
940
+ Alias (visit(JSON_EXTEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
937
941
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
938
942
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
939
943
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -961,7 +965,7 @@ class FlintSparkPPLJsonFunctionITSuite
961
965
Literal (
962
966
" {\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}" )
963
967
val jsonFunc =
964
- Alias (visit(" json_extend " , util.List .of(jsonObjExp, keysExpression)), " result" )()
968
+ Alias (visit(JSON_EXTEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
965
969
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
966
970
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
967
971
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
@@ -993,7 +997,7 @@ class FlintSparkPPLJsonFunctionITSuite
993
997
Literal (
994
998
" {\" school\" :{\" teacher\" :[\" Alice\" ],\" student\" :[{\" name\" :\" Bob\" ,\" rank\" :1},{\" name\" :\" Charlie\" ,\" rank\" :2}]}}" )
995
999
val jsonFunc =
996
- Alias (visit(" json_extend " , util.List .of(jsonObjExp, keysExpression)), " result" )()
1000
+ Alias (visit(JSON_EXTEND , util.List .of(jsonObjExp, keysExpression)), " result" )()
997
1001
val eval = Project (Seq (UnresolvedStar (None ), jsonFunc), table)
998
1002
val limit = GlobalLimit (Literal (1 ), LocalLimit (Literal (1 ), eval))
999
1003
val expectedPlan = Project (Seq (UnresolvedAttribute (" result" )), limit)
0 commit comments