github-actions[bot] commented on code in PR #24631:
URL: https://github.com/apache/doris/pull/24631#discussion_r1334318050


##########
be/test/vec/function/function_jsonb_test.cpp:
##########
@@ -1487,4 +1487,574 @@ TEST(FunctionJsonbTEST, JsonbCastFromOtherTest) {
             "CAST", {Notnull {TypeIndex::String}, ConstedNotnull 
{TypeIndex::JSONB}},
             {{{STRING(R"("abcd")"), Null()}, STRING(R"("abcd")")}});
 }
+
+TEST(FunctionJsonbTEST, GetJSONSTRINGTest) {
+    std::string func_name = "get_json_string";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, STRING("null")},
+            {{STRING("true"), STRING("$")}, STRING("true")},
+            {{STRING("false"), STRING("$")}, STRING("false")},
+            {{STRING("100"), STRING("$")}, STRING("100")},                     
            //int8
+            {{STRING("10000"), STRING("$")}, STRING("10000")},                 
            // int16
+            {{STRING("1000000000"), STRING("$")}, STRING("1000000000")},       
            // int32
+            {{STRING("1152921504606846976"), STRING("$")}, 
STRING("1152921504606846976")}, // int64
+            {{STRING("6.18"), STRING("$")}, STRING("6.18")},                   
            // double
+            {{STRING(R"("abcd")"), STRING("$")}, STRING("abcd")},              
            // string
+            {{STRING("{}"), STRING("$")}, STRING("{}")}, // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")},
+             STRING(R"({"k1":"v31","k2":300})")},                       // 
object
+            {{STRING("[]"), STRING("$")}, STRING("[]")},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, STRING("[123,456]")}, // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$")},
+             STRING(R"(["abc","def"])")}, // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             STRING(R"([null,true,false,100,6.18,"abc"])")}, // multi type 
array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             STRING(R"([{"k1":"v41","k2":400},1,"a",3.14])")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                         
      //int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                       
      // int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                  
      // int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},         
      // int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                        
      // double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                   
      // string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                          
      // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, 
STRING("v31")}, // object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                          
      // empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                  
      // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},           
      // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                 //int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},               // int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},          // int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0]")}, STRING("{}")},            // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")},
+             STRING(R"({"k1":"v31","k2":300})")},     // object
+            {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, STRING("123")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, STRING("456")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, STRING("abc")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, STRING("def")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             STRING("null")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             STRING("true")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             STRING("false")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             STRING("100")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             STRING("6.18")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             STRING("abc")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             STRING(R"({"k1":"v41","k2":400})")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             STRING("1")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             STRING("a")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             STRING("3.14")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                 
//int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},               // 
int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},          // 
int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // 
int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                  // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
STRING(R"(v31)")}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},        // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             STRING("v41")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonIntTest) {
+    std::string func_name = "get_json_int";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};

Review Comment:
   warning: variable 'input_types' is not initialized 
[cppcoreguidelines-init-variables]
   
   ```suggestion
       InputTypeSet input_types = 0 = {TypeIndex::JSONB, TypeIndex::String};
   ```
   



##########
be/test/vec/function/function_jsonb_test.cpp:
##########
@@ -1487,4 +1487,574 @@ TEST(FunctionJsonbTEST, JsonbCastFromOtherTest) {
             "CAST", {Notnull {TypeIndex::String}, ConstedNotnull 
{TypeIndex::JSONB}},
             {{{STRING(R"("abcd")"), Null()}, STRING(R"("abcd")")}});
 }
+
+TEST(FunctionJsonbTEST, GetJSONSTRINGTest) {
+    std::string func_name = "get_json_string";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, STRING("null")},
+            {{STRING("true"), STRING("$")}, STRING("true")},
+            {{STRING("false"), STRING("$")}, STRING("false")},
+            {{STRING("100"), STRING("$")}, STRING("100")},                     
            //int8
+            {{STRING("10000"), STRING("$")}, STRING("10000")},                 
            // int16
+            {{STRING("1000000000"), STRING("$")}, STRING("1000000000")},       
            // int32
+            {{STRING("1152921504606846976"), STRING("$")}, 
STRING("1152921504606846976")}, // int64
+            {{STRING("6.18"), STRING("$")}, STRING("6.18")},                   
            // double
+            {{STRING(R"("abcd")"), STRING("$")}, STRING("abcd")},              
            // string
+            {{STRING("{}"), STRING("$")}, STRING("{}")}, // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")},
+             STRING(R"({"k1":"v31","k2":300})")},                       // 
object
+            {{STRING("[]"), STRING("$")}, STRING("[]")},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, STRING("[123,456]")}, // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$")},
+             STRING(R"(["abc","def"])")}, // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             STRING(R"([null,true,false,100,6.18,"abc"])")}, // multi type 
array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             STRING(R"([{"k1":"v41","k2":400},1,"a",3.14])")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                         
      //int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                       
      // int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                  
      // int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},         
      // int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                        
      // double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                   
      // string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                          
      // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, 
STRING("v31")}, // object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                          
      // empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                  
      // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},           
      // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                 //int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},               // int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},          // int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0]")}, STRING("{}")},            // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")},
+             STRING(R"({"k1":"v31","k2":300})")},     // object
+            {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, STRING("123")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, STRING("456")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, STRING("abc")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, STRING("def")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             STRING("null")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             STRING("true")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             STRING("false")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             STRING("100")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             STRING("6.18")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             STRING("abc")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             STRING(R"({"k1":"v41","k2":400})")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             STRING("1")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             STRING("a")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             STRING("3.14")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                 
//int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},               // 
int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},          // 
int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // 
int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                  // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
STRING(R"(v31)")}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},        // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             STRING("v41")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonIntTest) {
+    std::string func_name = "get_json_int";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {

Review Comment:
   warning: variable 'data_set' is not initialized 
[cppcoreguidelines-init-variables]
   
   ```suggestion
       DataSet data_set = 0 = {
   ```
   



##########
be/test/vec/function/function_jsonb_test.cpp:
##########
@@ -1487,4 +1487,574 @@ TEST(FunctionJsonbTEST, JsonbCastFromOtherTest) {
             "CAST", {Notnull {TypeIndex::String}, ConstedNotnull 
{TypeIndex::JSONB}},
             {{{STRING(R"("abcd")"), Null()}, STRING(R"("abcd")")}});
 }
+
+TEST(FunctionJsonbTEST, GetJSONSTRINGTest) {
+    std::string func_name = "get_json_string";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, STRING("null")},
+            {{STRING("true"), STRING("$")}, STRING("true")},
+            {{STRING("false"), STRING("$")}, STRING("false")},
+            {{STRING("100"), STRING("$")}, STRING("100")},                     
            //int8
+            {{STRING("10000"), STRING("$")}, STRING("10000")},                 
            // int16
+            {{STRING("1000000000"), STRING("$")}, STRING("1000000000")},       
            // int32
+            {{STRING("1152921504606846976"), STRING("$")}, 
STRING("1152921504606846976")}, // int64
+            {{STRING("6.18"), STRING("$")}, STRING("6.18")},                   
            // double
+            {{STRING(R"("abcd")"), STRING("$")}, STRING("abcd")},              
            // string
+            {{STRING("{}"), STRING("$")}, STRING("{}")}, // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")},
+             STRING(R"({"k1":"v31","k2":300})")},                       // 
object
+            {{STRING("[]"), STRING("$")}, STRING("[]")},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, STRING("[123,456]")}, // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$")},
+             STRING(R"(["abc","def"])")}, // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             STRING(R"([null,true,false,100,6.18,"abc"])")}, // multi type 
array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             STRING(R"([{"k1":"v41","k2":400},1,"a",3.14])")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                         
      //int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                       
      // int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                  
      // int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},         
      // int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                        
      // double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                   
      // string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                          
      // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, 
STRING("v31")}, // object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                          
      // empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                  
      // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},           
      // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                 //int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},               // int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},          // int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0]")}, STRING("{}")},            // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")},
+             STRING(R"({"k1":"v31","k2":300})")},     // object
+            {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, STRING("123")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, STRING("456")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, STRING("abc")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, STRING("def")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             STRING("null")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             STRING("true")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             STRING("false")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             STRING("100")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             STRING("6.18")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             STRING("abc")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             STRING(R"({"k1":"v41","k2":400})")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             STRING("1")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             STRING("a")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             STRING("3.14")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                 
//int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},               // 
int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},          // 
int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // 
int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                  // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
STRING(R"(v31)")}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},        // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             STRING("v41")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonIntTest) {
+    std::string func_name = "get_json_int";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, Null()},
+            {{STRING("true"), STRING("$")}, Null()},
+            {{STRING("false"), STRING("$")}, Null()},
+            {{STRING("100"), STRING("$")}, INT(100)},                      
//int8
+            {{STRING("10000"), STRING("$")}, INT(10000)},                  // 
int16
+            {{STRING("1000000000"), STRING("$")}, INT(1000000000)},        // 
int32
+            {{STRING("1152921504606846976"), STRING("$")}, Null()},        // 
int64
+            {{STRING("6.18"), STRING("$")}, Null()},                       // 
double
+            {{STRING(R"("abcd")"), STRING("$")}, Null()},                  // 
string
+            {{STRING("{}"), STRING("$")}, Null()},                         // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")}, Null()}, // 
object
+            {{STRING("[]"), STRING("$")}, Null()},                         // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, Null()},                 // 
int array
+            {{STRING(R"(["abc", "def"])"), STRING("$")}, Null()},          // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[0]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[0]")}, Null()},                         
// empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, INT(123)},               
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, INT(456)},               
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             INT(100)}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             INT(1)}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                      
  //int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},                    
  // int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},               
  // int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()},      
  // int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                     
  // double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},                
  // string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                       
  // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
Null()}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                       
  // empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},               
  // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()},        
  // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k2")},
+             INT(400)}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonBigIntTest) {
+    std::string func_name = "get_json_bigint";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, Null()},
+            {{STRING("true"), STRING("$")}, Null()},
+            {{STRING("false"), STRING("$")}, Null()},
+            {{STRING("100"), STRING("$")}, BIGINT(100)},                       
          //int8
+            {{STRING("10000"), STRING("$")}, BIGINT(10000)},                   
          // int16
+            {{STRING("1000000000"), STRING("$")}, BIGINT(1000000000)},         
          // int32
+            {{STRING("1152921504606846976"), STRING("$")}, 
BIGINT(1152921504606846976)}, // int64
+            {{STRING("6.18"), STRING("$")}, Null()},                           
          // double
+            {{STRING(R"("abcd")"), STRING("$")}, Null()},                      
          // string
+            {{STRING("{}"), STRING("$")}, Null()},                         // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")}, Null()}, // 
object
+            {{STRING("[]"), STRING("$")}, Null()},                         // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, Null()},                 // 
int array
+            {{STRING(R"(["abc", "def"])"), STRING("$")}, Null()},          // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt64, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt64, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[0]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[0]")}, Null()},                         
// empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, BIGINT(123)},            
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, BIGINT(456)},            
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             BIGINT(100)}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             BIGINT(1)}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt64, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                      
  //int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},                    
  // int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},               
  // int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()},      
  // int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                     
  // double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},                
  // string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                       
  // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
Null()}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                       
  // empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},               
  // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()},        
  // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k2")},
+             BIGINT(400)}, // complex array
+    };
+
+    check_function<DataTypeInt64, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonDoubleTest) {
+    std::string func_name = "get_json_double";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {

Review Comment:
   warning: variable 'data_set' is not initialized 
[cppcoreguidelines-init-variables]
   
   ```suggestion
       DataSet data_set = 0 = {
   ```
   



##########
be/test/vec/function/function_jsonb_test.cpp:
##########
@@ -1487,4 +1487,574 @@ TEST(FunctionJsonbTEST, JsonbCastFromOtherTest) {
             "CAST", {Notnull {TypeIndex::String}, ConstedNotnull 
{TypeIndex::JSONB}},
             {{{STRING(R"("abcd")"), Null()}, STRING(R"("abcd")")}});
 }
+
+TEST(FunctionJsonbTEST, GetJSONSTRINGTest) {
+    std::string func_name = "get_json_string";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, STRING("null")},
+            {{STRING("true"), STRING("$")}, STRING("true")},
+            {{STRING("false"), STRING("$")}, STRING("false")},
+            {{STRING("100"), STRING("$")}, STRING("100")},                     
            //int8
+            {{STRING("10000"), STRING("$")}, STRING("10000")},                 
            // int16
+            {{STRING("1000000000"), STRING("$")}, STRING("1000000000")},       
            // int32
+            {{STRING("1152921504606846976"), STRING("$")}, 
STRING("1152921504606846976")}, // int64
+            {{STRING("6.18"), STRING("$")}, STRING("6.18")},                   
            // double
+            {{STRING(R"("abcd")"), STRING("$")}, STRING("abcd")},              
            // string
+            {{STRING("{}"), STRING("$")}, STRING("{}")}, // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")},
+             STRING(R"({"k1":"v31","k2":300})")},                       // 
object
+            {{STRING("[]"), STRING("$")}, STRING("[]")},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, STRING("[123,456]")}, // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$")},
+             STRING(R"(["abc","def"])")}, // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             STRING(R"([null,true,false,100,6.18,"abc"])")}, // multi type 
array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             STRING(R"([{"k1":"v41","k2":400},1,"a",3.14])")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                         
      //int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                       
      // int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                  
      // int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},         
      // int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                        
      // double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                   
      // string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                          
      // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, 
STRING("v31")}, // object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                          
      // empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                  
      // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},           
      // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                 //int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},               // int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},          // int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0]")}, STRING("{}")},            // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")},
+             STRING(R"({"k1":"v31","k2":300})")},     // object
+            {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, STRING("123")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, STRING("456")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, STRING("abc")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, STRING("def")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             STRING("null")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             STRING("true")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             STRING("false")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             STRING("100")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             STRING("6.18")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             STRING("abc")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             STRING(R"({"k1":"v41","k2":400})")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             STRING("1")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             STRING("a")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             STRING("3.14")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                 
//int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},               // 
int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},          // 
int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // 
int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                  // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
STRING(R"(v31)")}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},        // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             STRING("v41")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonIntTest) {
+    std::string func_name = "get_json_int";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, Null()},
+            {{STRING("true"), STRING("$")}, Null()},
+            {{STRING("false"), STRING("$")}, Null()},
+            {{STRING("100"), STRING("$")}, INT(100)},                      
//int8
+            {{STRING("10000"), STRING("$")}, INT(10000)},                  // 
int16
+            {{STRING("1000000000"), STRING("$")}, INT(1000000000)},        // 
int32
+            {{STRING("1152921504606846976"), STRING("$")}, Null()},        // 
int64
+            {{STRING("6.18"), STRING("$")}, Null()},                       // 
double
+            {{STRING(R"("abcd")"), STRING("$")}, Null()},                  // 
string
+            {{STRING("{}"), STRING("$")}, Null()},                         // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")}, Null()}, // 
object
+            {{STRING("[]"), STRING("$")}, Null()},                         // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, Null()},                 // 
int array
+            {{STRING(R"(["abc", "def"])"), STRING("$")}, Null()},          // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[0]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[0]")}, Null()},                         
// empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, INT(123)},               
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, INT(456)},               
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             INT(100)}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             INT(1)}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                      
  //int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},                    
  // int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},               
  // int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()},      
  // int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                     
  // double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},                
  // string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                       
  // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
Null()}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                       
  // empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},               
  // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()},        
  // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k2")},
+             INT(400)}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonBigIntTest) {
+    std::string func_name = "get_json_bigint";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};

Review Comment:
   warning: variable 'input_types' is not initialized 
[cppcoreguidelines-init-variables]
   
   ```suggestion
       InputTypeSet input_types = 0 = {TypeIndex::JSONB, TypeIndex::String};
   ```
   



##########
be/test/vec/function/function_jsonb_test.cpp:
##########
@@ -1487,4 +1487,574 @@ TEST(FunctionJsonbTEST, JsonbCastFromOtherTest) {
             "CAST", {Notnull {TypeIndex::String}, ConstedNotnull 
{TypeIndex::JSONB}},
             {{{STRING(R"("abcd")"), Null()}, STRING(R"("abcd")")}});
 }
+
+TEST(FunctionJsonbTEST, GetJSONSTRINGTest) {
+    std::string func_name = "get_json_string";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, STRING("null")},
+            {{STRING("true"), STRING("$")}, STRING("true")},
+            {{STRING("false"), STRING("$")}, STRING("false")},
+            {{STRING("100"), STRING("$")}, STRING("100")},                     
            //int8
+            {{STRING("10000"), STRING("$")}, STRING("10000")},                 
            // int16
+            {{STRING("1000000000"), STRING("$")}, STRING("1000000000")},       
            // int32
+            {{STRING("1152921504606846976"), STRING("$")}, 
STRING("1152921504606846976")}, // int64
+            {{STRING("6.18"), STRING("$")}, STRING("6.18")},                   
            // double
+            {{STRING(R"("abcd")"), STRING("$")}, STRING("abcd")},              
            // string
+            {{STRING("{}"), STRING("$")}, STRING("{}")}, // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")},
+             STRING(R"({"k1":"v31","k2":300})")},                       // 
object
+            {{STRING("[]"), STRING("$")}, STRING("[]")},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, STRING("[123,456]")}, // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$")},
+             STRING(R"(["abc","def"])")}, // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             STRING(R"([null,true,false,100,6.18,"abc"])")}, // multi type 
array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             STRING(R"([{"k1":"v41","k2":400},1,"a",3.14])")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                         
      //int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                       
      // int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                  
      // int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},         
      // int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                        
      // double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                   
      // string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                          
      // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, 
STRING("v31")}, // object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                          
      // empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                  
      // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},           
      // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                 //int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},               // int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},          // int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0]")}, STRING("{}")},            // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")},
+             STRING(R"({"k1":"v31","k2":300})")},     // object
+            {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, STRING("123")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, STRING("456")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, STRING("abc")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, STRING("def")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             STRING("null")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             STRING("true")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             STRING("false")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             STRING("100")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             STRING("6.18")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             STRING("abc")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             STRING(R"({"k1":"v41","k2":400})")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             STRING("1")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             STRING("a")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             STRING("3.14")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                 
//int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},               // 
int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},          // 
int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // 
int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                  // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
STRING(R"(v31)")}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},        // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             STRING("v41")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonIntTest) {
+    std::string func_name = "get_json_int";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, Null()},
+            {{STRING("true"), STRING("$")}, Null()},
+            {{STRING("false"), STRING("$")}, Null()},
+            {{STRING("100"), STRING("$")}, INT(100)},                      
//int8
+            {{STRING("10000"), STRING("$")}, INT(10000)},                  // 
int16
+            {{STRING("1000000000"), STRING("$")}, INT(1000000000)},        // 
int32
+            {{STRING("1152921504606846976"), STRING("$")}, Null()},        // 
int64
+            {{STRING("6.18"), STRING("$")}, Null()},                       // 
double
+            {{STRING(R"("abcd")"), STRING("$")}, Null()},                  // 
string
+            {{STRING("{}"), STRING("$")}, Null()},                         // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")}, Null()}, // 
object
+            {{STRING("[]"), STRING("$")}, Null()},                         // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, Null()},                 // 
int array
+            {{STRING(R"(["abc", "def"])"), STRING("$")}, Null()},          // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[0]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[0]")}, Null()},                         
// empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, INT(123)},               
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, INT(456)},               
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             INT(100)}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             INT(1)}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                      
  //int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},                    
  // int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},               
  // int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()},      
  // int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                     
  // double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},                
  // string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                       
  // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
Null()}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                       
  // empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},               
  // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()},        
  // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k2")},
+             INT(400)}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonBigIntTest) {
+    std::string func_name = "get_json_bigint";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {

Review Comment:
   warning: variable 'data_set' is not initialized 
[cppcoreguidelines-init-variables]
   
   ```suggestion
       DataSet data_set = 0 = {
   ```
   



##########
be/test/vec/function/function_jsonb_test.cpp:
##########
@@ -1487,4 +1487,574 @@ TEST(FunctionJsonbTEST, JsonbCastFromOtherTest) {
             "CAST", {Notnull {TypeIndex::String}, ConstedNotnull 
{TypeIndex::JSONB}},
             {{{STRING(R"("abcd")"), Null()}, STRING(R"("abcd")")}});
 }
+
+TEST(FunctionJsonbTEST, GetJSONSTRINGTest) {
+    std::string func_name = "get_json_string";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, STRING("null")},
+            {{STRING("true"), STRING("$")}, STRING("true")},
+            {{STRING("false"), STRING("$")}, STRING("false")},
+            {{STRING("100"), STRING("$")}, STRING("100")},                     
            //int8
+            {{STRING("10000"), STRING("$")}, STRING("10000")},                 
            // int16
+            {{STRING("1000000000"), STRING("$")}, STRING("1000000000")},       
            // int32
+            {{STRING("1152921504606846976"), STRING("$")}, 
STRING("1152921504606846976")}, // int64
+            {{STRING("6.18"), STRING("$")}, STRING("6.18")},                   
            // double
+            {{STRING(R"("abcd")"), STRING("$")}, STRING("abcd")},              
            // string
+            {{STRING("{}"), STRING("$")}, STRING("{}")}, // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")},
+             STRING(R"({"k1":"v31","k2":300})")},                       // 
object
+            {{STRING("[]"), STRING("$")}, STRING("[]")},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, STRING("[123,456]")}, // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$")},
+             STRING(R"(["abc","def"])")}, // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             STRING(R"([null,true,false,100,6.18,"abc"])")}, // multi type 
array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             STRING(R"([{"k1":"v41","k2":400},1,"a",3.14])")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                         
      //int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                       
      // int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                  
      // int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},         
      // int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                        
      // double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                   
      // string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                          
      // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, 
STRING("v31")}, // object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                          
      // empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                  
      // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},           
      // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                 //int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},               // int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},          // int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0]")}, STRING("{}")},            // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")},
+             STRING(R"({"k1":"v31","k2":300})")},     // object
+            {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, STRING("123")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, STRING("456")},          
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, STRING("abc")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, STRING("def")},   
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             STRING("null")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             STRING("true")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             STRING("false")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             STRING("100")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             STRING("6.18")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             STRING("abc")}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             STRING(R"({"k1":"v41","k2":400})")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             STRING("1")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             STRING("a")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             STRING("3.14")}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                 
//int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},               // 
int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},          // 
int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // 
int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                // 
double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},           // 
string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                  // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
STRING(R"(v31)")}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                // 
empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},        // int 
array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             STRING("v41")}, // complex array
+    };
+
+    check_function<DataTypeString, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonIntTest) {
+    std::string func_name = "get_json_int";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, Null()},
+            {{STRING("true"), STRING("$")}, Null()},
+            {{STRING("false"), STRING("$")}, Null()},
+            {{STRING("100"), STRING("$")}, INT(100)},                      
//int8
+            {{STRING("10000"), STRING("$")}, INT(10000)},                  // 
int16
+            {{STRING("1000000000"), STRING("$")}, INT(1000000000)},        // 
int32
+            {{STRING("1152921504606846976"), STRING("$")}, Null()},        // 
int64
+            {{STRING("6.18"), STRING("$")}, Null()},                       // 
double
+            {{STRING(R"("abcd")"), STRING("$")}, Null()},                  // 
string
+            {{STRING("{}"), STRING("$")}, Null()},                         // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")}, Null()}, // 
object
+            {{STRING("[]"), STRING("$")}, Null()},                         // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, Null()},                 // 
int array
+            {{STRING(R"(["abc", "def"])"), STRING("$")}, Null()},          // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[0]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[0]")}, Null()},                         
// empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, INT(123)},               
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, INT(456)},               
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             INT(100)}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             INT(1)}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                      
  //int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},                    
  // int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},               
  // int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()},      
  // int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                     
  // double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},                
  // string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                       
  // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
Null()}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                       
  // empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},               
  // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()},        
  // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k2")},
+             INT(400)}, // complex array
+    };
+
+    check_function<DataTypeInt32, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonBigIntTest) {
+    std::string func_name = "get_json_bigint";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};
+
+    // get json from root
+    DataSet data_set = {
+            {{Null(), STRING("$")}, Null()},
+            {{STRING("null"), STRING("$")}, Null()},
+            {{STRING("true"), STRING("$")}, Null()},
+            {{STRING("false"), STRING("$")}, Null()},
+            {{STRING("100"), STRING("$")}, BIGINT(100)},                       
          //int8
+            {{STRING("10000"), STRING("$")}, BIGINT(10000)},                   
          // int16
+            {{STRING("1000000000"), STRING("$")}, BIGINT(1000000000)},         
          // int32
+            {{STRING("1152921504606846976"), STRING("$")}, 
BIGINT(1152921504606846976)}, // int64
+            {{STRING("6.18"), STRING("$")}, Null()},                           
          // double
+            {{STRING(R"("abcd")"), STRING("$")}, Null()},                      
          // string
+            {{STRING("{}"), STRING("$")}, Null()},                         // 
empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$")}, Null()}, // 
object
+            {{STRING("[]"), STRING("$")}, Null()},                         // 
empty array
+            {{STRING("[123, 456]"), STRING("$")}, Null()},                 // 
int array
+            {{STRING(R"(["abc", "def"])"), STRING("$")}, Null()},          // 
string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt64, true>(func_name, input_types, data_set);
+
+    // get json from obejct
+    data_set = {
+            {{Null(), STRING("$.k1")}, Null()},
+            {{STRING("null"), STRING("$.k1")}, Null()},
+            {{STRING("true"), STRING("$.k1")}, Null()},
+            {{STRING("false"), STRING("$.k1")}, Null()},
+            {{STRING("100"), STRING("$.k1")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$.k1")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$.k1")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$.k1")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$.k1")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$.k1")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$.k1")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$.k1")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$.k1")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$.k1")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$.k1")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$.k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$.k1")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt64, true>(func_name, input_types, data_set);
+
+    // get json from array
+    data_set = {
+            {{Null(), STRING("$[0]")}, Null()},
+            {{STRING("null"), STRING("$[0]")}, Null()},
+            {{STRING("true"), STRING("$[0]")}, Null()},
+            {{STRING("false"), STRING("$[0]")}, Null()},
+            {{STRING("100"), STRING("$[0]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[0]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[0]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[0]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[0]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[0]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[0]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[0]")}, Null()},                         
// empty array
+            {{STRING("null"), STRING("$[1]")}, Null()},
+            {{STRING("true"), STRING("$[1]")}, Null()},
+            {{STRING("false"), STRING("$[1]")}, Null()},
+            {{STRING("100"), STRING("$[1]")}, Null()},                        
//int8
+            {{STRING("10000"), STRING("$[1]")}, Null()},                      
// int16
+            {{STRING("1000000000"), STRING("$[1]")}, Null()},                 
// int32
+            {{STRING("1152921504606846976"), STRING("$[1]")}, Null()},        
// int64
+            {{STRING("6.18"), STRING("$[1]")}, Null()},                       
// double
+            {{STRING(R"("abcd")"), STRING("$[1]")}, Null()},                  
// string
+            {{STRING("{}"), STRING("$[1]")}, Null()},                         
// empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[1]")}, Null()}, 
// object
+            {{STRING("[]"), STRING("$[1]")}, Null()},                         
// empty array
+            {{STRING("[123, 456]"), STRING("$[0]")}, BIGINT(123)},            
// int array
+            {{STRING("[123, 456]"), STRING("$[1]")}, BIGINT(456)},            
// int array
+            {{STRING("[123, 456]"), STRING("$[2]")}, Null()},                 
// int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[1]")}, Null()},          
// string array
+            {{STRING(R"(["abc", "def"])"), STRING("$[2]")}, Null()},          
// string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[1]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[2]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[3]")},
+             BIGINT(100)}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[4]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[5]")},
+             Null()}, // multi type array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[6]")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[1]")},
+             BIGINT(1)}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[2]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[3]")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[4]")},
+             Null()}, // complex array
+    };
+
+    check_function<DataTypeInt64, true>(func_name, input_types, data_set);
+
+    // get json with path $[0].k1
+    data_set = {
+            {{Null(), STRING("$[0].k1")}, Null()},
+            {{STRING("null"), STRING("$[0].k1")}, Null()},
+            {{STRING("true"), STRING("$[0].k1")}, Null()},
+            {{STRING("false"), STRING("$[0].k1")}, Null()},
+            {{STRING("100"), STRING("$[0].k1")}, Null()},                      
  //int8
+            {{STRING("10000"), STRING("$[0].k1")}, Null()},                    
  // int16
+            {{STRING("1000000000"), STRING("$[0].k1")}, Null()},               
  // int32
+            {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()},      
  // int64
+            {{STRING("6.18"), STRING("$[0].k1")}, Null()},                     
  // double
+            {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()},                
  // string
+            {{STRING("{}"), STRING("$[0].k1")}, Null()},                       
  // empty object
+            {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, 
Null()}, // object
+            {{STRING("[]"), STRING("$[0].k1")}, Null()},                       
  // empty array
+            {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()},               
  // int array
+            {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()},        
  // string array
+            {{STRING(R"([null, true, false, 100, 6.18, "abc"])"), 
STRING("$[0].k1")},
+             Null()}, // multi type array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k1")},
+             Null()}, // complex array
+            {{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), 
STRING("$[0].k2")},
+             BIGINT(400)}, // complex array
+    };
+
+    check_function<DataTypeInt64, true>(func_name, input_types, data_set);
+}
+
+TEST(FunctionJsonbTEST, GetJsonDoubleTest) {
+    std::string func_name = "get_json_double";
+    InputTypeSet input_types = {TypeIndex::JSONB, TypeIndex::String};

Review Comment:
   warning: variable 'input_types' is not initialized 
[cppcoreguidelines-init-variables]
   
   ```suggestion
       InputTypeSet input_types = 0 = {TypeIndex::JSONB, TypeIndex::String};
   ```
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to