This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new c87e78dc35 [bug](jsonb) fix jsonb query bug When the json key value 
contains "."  (#19185)
c87e78dc35 is described below

commit c87e78dc354dc994867f5aa86bf7862025ccedcd
Author: Liqf <[email protected]>
AuthorDate: Mon May 15 15:43:12 2023 +0800

    [bug](jsonb) fix jsonb query bug When the json key value contains "."  
(#19185)
    
    Issue Number: close #19173
    
    mysql> SELECT jsonb_extract('{"a.b.c":{"k1":"v31", "k2.a1": 
300},"a":"opentelemetry"}', '$."a.b.c".k1');
    
+-------------------------------------------------------------------------------------------+
    | jsonb_extract('{"a.b.c":{"k1":"v31", "k2.a1": 300},"a":"opentelemetry"}', 
'$."a.b.c".k1') |
    
+-------------------------------------------------------------------------------------------+
    | "v31" |
    
+-------------------------------------------------------------------------------------------+
    1 row in set (0.06 sec)
---
 be/src/util/jsonb_document.h                       | 340 +++++++++++++++-----
 be/src/vec/functions/function_jsonb.cpp            |   4 +-
 .../sql-functions/json-functions/jsonb_extract.md  |   2 +
 .../sql-functions/json-functions/jsonb_extract.md  |   8 +-
 .../data/jsonb_p0/test_jsonb_load_and_function.out | 342 +++++++++++++++++++++
 .../test_jsonb_load_unique_key_and_function.out    | 336 ++++++++++++++++++++
 .../jsonb_p0/test_jsonb_load_and_function.groovy   |   8 +
 .../test_jsonb_load_unique_key_and_function.groovy |   8 +
 8 files changed, 962 insertions(+), 86 deletions(-)

diff --git a/be/src/util/jsonb_document.h b/be/src/util/jsonb_document.h
index 19106cdea4..4a8705b623 100644
--- a/be/src/util/jsonb_document.h
+++ b/be/src/util/jsonb_document.h
@@ -69,9 +69,11 @@
 #include <assert.h>
 #include <stdint.h>
 #include <stdlib.h>
-#include <string.h>
 
+#include <algorithm>
+#include <cctype>
 #include <limits>
+#include <string>
 #include <type_traits>
 
 // IWYU pragma: no_include <opentelemetry/common/threadlocal.h>
@@ -129,6 +131,17 @@ enum class JsonbType : char {
     NUM_TYPES,
 };
 
+//for parse json path
+constexpr char SCOPE = '$';
+constexpr char BEGIN_MEMBER = '.';
+constexpr char BEGIN_ARRAY = '[';
+constexpr char END_ARRAY = ']';
+constexpr char DOUBLE_QUOTE = '"';
+constexpr char WILDCARD = '*';
+constexpr char MINUS = '-';
+constexpr char LAST[] = "last";
+constexpr char ESCAPE = '\\';
+
 /*
  * JsonbDocument is the main object that accesses and queries JSONB packed
  * bytes. NOTE: JsonbDocument only allows object container as the top level
@@ -213,6 +226,109 @@ private:
     char payload_[0];
 };
 
+/// A simple input stream class for the JSON path parser.
+class Stream {
+public:
+    /// Creates an input stream reading from a character string.
+    /// @param string  the input string
+    /// @param length  the length of the input string
+    Stream(const char* string, size_t length) : m_position(string), 
m_end(string + length) {}
+
+    /// Returns a pointer to the current position in the stream.
+    const char* position() const { return m_position; }
+
+    /// Returns a pointer to the position just after the end of the stream.
+    const char* end() const { return m_end; }
+
+    /// Returns the number of bytes remaining in the stream.
+    size_t remaining() const {
+        assert(m_position <= m_end);
+        return m_end - m_position;
+    }
+
+    /// Tells if the stream has been exhausted.
+    bool exhausted() const { return remaining() == 0; }
+
+    /// Reads the next byte from the stream and moves the position forward.
+    char read() {
+        assert(!exhausted());
+        return *m_position++;
+    }
+
+    /// Reads the next byte from the stream without moving the position 
forward.
+    char peek() const {
+        assert(!exhausted());
+        return *m_position;
+    }
+
+    /// Moves the position to the next non-whitespace character.
+    void skip_whitespace() {
+        m_position = std::find_if_not(m_position, m_end, [](char c) { return 
std::isspace(c); });
+    }
+
+    /// Moves the position n bytes forward.
+    void skip(size_t n) {
+        assert(remaining() >= n);
+        m_position += n;
+        skip_whitespace();
+    }
+
+    void clear_legPtr() { legPtr = nullptr; }
+
+    void set_legPtr(char* ptr) {
+        clear_legPtr();
+        legPtr = ptr;
+    }
+
+    char* get_legPtr() { return legPtr; }
+
+    void clear_legLen() { legLen = 0; }
+
+    void add_legLen() { legLen++; }
+
+    unsigned int get_legLen() { return legLen; }
+
+    void remove_escapes() {
+        int new_len = 0;
+        for (int i = 0; i < legLen; i++) {
+            if (legPtr[i] != '\\') {
+                legPtr[new_len++] = legPtr[i];
+            }
+        }
+        legPtr[new_len] = '\0';
+        legLen = new_len;
+    }
+
+    void set_hasEscapes(bool has) { hasEscapes = has; }
+
+    bool get_hasEscapes() { return hasEscapes; }
+
+private:
+    /// The current position in the stream.
+    const char* m_position;
+
+    /// The end of the stream.
+    const char* const m_end;
+
+    ///path leg ptr
+    char* legPtr;
+
+    ///path leg len
+    unsigned int legLen;
+
+    ///
+    bool hasEscapes = false;
+};
+
+class JsonbPath {
+public:
+    // parse json path
+    static bool parsePath(Stream* stream, JsonbValue* value);
+
+    static bool parse_array(Stream* stream);
+    static bool parse_member(Stream* stream);
+};
+
 /*
  * JsonbFwdIteratorT implements JSONB's iterator template.
  *
@@ -394,14 +510,12 @@ public:
     const char* getValuePtr() const;
 
     // find the JSONB value by a key path string (null terminated)
-    JsonbValue* findPath(const char* key_path, const char* delim = ".",
-                         hDictFind handler = nullptr) {
-        return findPath(key_path, (unsigned int)strlen(key_path), delim, 
handler);
+    JsonbValue* findPath(const char* key_path, hDictFind handler = nullptr) {
+        return findPath(key_path, (unsigned int)strlen(key_path), handler);
     }
 
     // find the JSONB value by a key path string (with length)
-    JsonbValue* findPath(const char* key_path, unsigned int len, const char* 
delim,
-                         hDictFind handler);
+    JsonbValue* findPath(const char* key_path, unsigned int len, hDictFind 
handler);
     friend class JsonbDocument;
 
 protected:
@@ -1072,103 +1186,165 @@ inline const char* JsonbValue::getValuePtr() const {
 }
 
 inline JsonbValue* JsonbValue::findPath(const char* key_path, unsigned int 
kp_len,
-                                        const char* delim = ".", hDictFind 
handler = nullptr) {
+                                        hDictFind handler = nullptr) {
     if (!key_path) return nullptr;
     if (kp_len == 0) return this;
+    Stream stream(key_path, kp_len);
+    stream.skip_whitespace();
+    if (stream.exhausted() || stream.read() != SCOPE) return nullptr;
 
-    // skip $ and . at beginning
-    if (kp_len > 0 && *key_path == '$') {
-        key_path++;
-        kp_len--;
-        if (kp_len > 0 && *key_path == '.') {
-            key_path++;
-            kp_len--;
-        }
-    }
+    JsonbValue* pval = this;
 
-    if (kp_len == 0) return this;
+    while (pval && !stream.exhausted()) {
+        stream.skip_whitespace();
+        stream.clear_legPtr();
+        stream.clear_legLen();
 
-    if (!delim) delim = "."; // default delimiter
+        if (!JsonbPath::parsePath(&stream, pval)) {
+            return nullptr;
+        }
 
-    JsonbValue* pval = this;
-    const char* fence = key_path + kp_len;
-    char idx_buf[21]; // buffer to parse array index (integer value)
-
-    while (pval && key_path < fence) {
-        const char* key = key_path;
-        unsigned int klen = 0;
-        const char* left_bracket = nullptr;
-        const char* right_bracket = nullptr;
-        size_t idx_len = 0;
-        // find the current key and [] bracket position
-        for (; key_path != fence && *key_path != *delim; ++key_path, ++klen) {
-            if ('[' == *key_path) {
-                left_bracket = key_path;
-            } else if (']' == *key_path) {
-                right_bracket = key_path;
-            }
+        if (stream.get_legLen() == 0) {
+            return nullptr;
         }
 
-        // check brackets and array index length
-        if (left_bracket || right_bracket) {
-            if (!left_bracket || !right_bracket) {
-                return nullptr;
+        if (LIKELY(pval->type_ == JsonbType::T_Object)) {
+            if (stream.get_legLen() == 1 && *stream.get_legPtr() == WILDCARD) {
+                return pval;
+            } else if (stream.get_hasEscapes()) {
+                stream.remove_escapes();
             }
-            // check the last char is ]
-            if (key + klen - 1 != right_bracket) {
-                return nullptr;
+
+            pval = ((ObjectVal*)pval)->find(stream.get_legPtr(), 
stream.get_legLen(), handler);
+
+            if (!pval) return nullptr;
+        } else if (LIKELY(pval->type_ == JsonbType::T_Array)) {
+            int index = 0;
+            std::string idx_string(stream.get_legPtr(), stream.get_legLen());
+
+            if (stream.get_legLen() == 1 && *stream.get_legPtr() == WILDCARD) {
+                return pval;
+            } else if (std::string(stream.get_legPtr(), 4) == LAST) {
+                auto pos = idx_string.find(MINUS);
+
+                if (pos != std::string::npos) {
+                    idx_string = idx_string.substr(pos + 1);
+                    size_t num = ((ArrayVal*)pval)->numElem();
+                    if (std::stoi(idx_string) > num) {
+                        return nullptr; //invalid json path
+                    }
+                    index = num - 1 - std::stoi(idx_string);
+                } else if (stream.get_legLen() == 4) {
+                    index = ((ArrayVal*)pval)->numElem() - 1;
+                } else {
+                    return nullptr; //invalid json path
+                }
+            } else {
+                std::string::size_type pos;
+                index = std::stoi(idx_string, &pos, 10);
+                if (pos != idx_string.size()) {
+                    return nullptr; //invalid json path
+                } else if (index >= ((ArrayVal*)pval)->numElem()) {
+                    return nullptr; //invalid json path
+                }
             }
-            // the part before left_bracket is object key
-            klen = left_bracket - key;
-            // the part between left_bracket and right_bracket is array index
-            idx_len = right_bracket - left_bracket - 1;
+
+            pval = ((ArrayVal*)pval)->get(index);
         }
+    }
 
-        if (!klen && !idx_len) return nullptr;
+    return pval;
+}
 
-        // get value of key in object
-        if (klen) {
-            if (LIKELY(pval->type_ == JsonbType::T_Object)) {
-                pval = ((ObjectVal*)pval)->find(key, klen, handler);
-                if (!pval) return nullptr;
-            } else {
-                return nullptr;
-            }
+inline bool JsonbPath::parsePath(Stream* stream, JsonbValue* value) {
+    if (stream->peek() == BEGIN_ARRAY && value->type() == JsonbType::T_Array) {
+        return parse_array(stream);
+    } else if (stream->peek() == BEGIN_MEMBER && value->type() == 
JsonbType::T_Object) {
+        return parse_member(stream);
+    } else {
+        return false; //invalid json path
+    }
+}
+
+inline bool JsonbPath::parse_array(Stream* stream) {
+    assert(stream->peek() == BEGIN_ARRAY);
+    stream->skip(1);
+    if (stream->exhausted()) return false; //invalid json path
+
+    if (stream->peek() == WILDCARD) {
+        stream->set_legPtr(const_cast<char*>(stream->position()));
+        stream->add_legLen();
+        stream->skip(1);
+        if (stream->peek() == END_ARRAY) {
+            return true;
+        } else {
+            return false; //invalid json path
         }
+    }
 
-        // get value at idx in array
-        if (idx_len) {
-            if (LIKELY(pval->type_ == JsonbType::T_Array)) {
-                if (idx_len >= sizeof(idx_buf)) return nullptr;
-                memcpy(idx_buf, left_bracket + 1, idx_len);
-                idx_buf[idx_len] = 0;
-
-                char* end = nullptr;
-                int index = (int)strtol(idx_buf, &end, 10);
-                if (end && !*end)
-                    pval = ((ArrayVal*)pval)->get(index);
-                else
-                    // incorrect index string
-                    return nullptr;
-
-                // doris::StringParser::ParseResult parse_result;
-                // int index = 
doris::StringParser::string_to_int<int>(left_bracket + 1, idx_len, 
&parse_result);
-                // if (parse_result == 
doris::StringParser::ParseResult::PARSE_SUCCESS)
+    stream->set_legPtr(const_cast<char*>(stream->position()));
+
+    for (; !stream->exhausted() && stream->peek() != END_ARRAY; 
stream->skip(1)) {
+        stream->add_legLen();
+    }
+
+    if (!stream->exhausted() && stream->peek() == END_ARRAY) {
+        stream->skip(1);
+        return true;
+    } else {
+        return false; //invalid json path
+    }
+}
+
+inline bool JsonbPath::parse_member(Stream* stream) {
+    // advance past the .
+    assert(stream->peek() == BEGIN_MEMBER);
+    stream->skip(1);
+    if (stream->exhausted()) return false; //invalid json path
+
+    if (stream->peek() == WILDCARD) {
+        stream->set_legPtr(const_cast<char*>(stream->position()));
+        stream->add_legLen();
+        stream->skip(1);
+        return true;
+    }
+
+    stream->set_legPtr(const_cast<char*>(stream->position()));
+
+    const char* left_quotation_marks = nullptr;
+    const char* right_quotation_marks = nullptr;
+
+    for (; !stream->exhausted(); stream->skip(1)) {
+        if (stream->peek() == ESCAPE) {
+            stream->add_legLen();
+            stream->skip(1);
+            stream->add_legLen();
+            stream->set_hasEscapes(true);
+            continue;
+        } else if (stream->peek() == DOUBLE_QUOTE) {
+            if (left_quotation_marks == nullptr) {
+                left_quotation_marks = stream->position();
+                stream->set_legPtr(const_cast<char*>(++left_quotation_marks));
+                continue;
             } else {
-                return nullptr;
+                right_quotation_marks = stream->position();
+                stream->skip(1);
+                break;
+            }
+        } else if (stream->peek() == BEGIN_MEMBER || stream->peek() == 
BEGIN_ARRAY) {
+            if (left_quotation_marks == nullptr) {
+                break;
             }
         }
 
-        // skip the delimiter
-        if (key_path < fence) {
-            ++key_path;
-            if (key_path == fence)
-                // we have a trailing delimiter at the end
-                return nullptr;
-        }
+        stream->add_legLen();
     }
 
-    return pval;
+    if (left_quotation_marks != nullptr && right_quotation_marks == nullptr) {
+        return false; //invalid json path
+    }
+
+    return true;
 }
 
 #pragma pack(pop)
diff --git a/be/src/vec/functions/function_jsonb.cpp 
b/be/src/vec/functions/function_jsonb.cpp
index a0af1e13a2..ed6cf23fc6 100644
--- a/be/src/vec/functions/function_jsonb.cpp
+++ b/be/src/vec/functions/function_jsonb.cpp
@@ -421,7 +421,7 @@ private:
         }
 
         // value is NOT necessary to be deleted since JsonbValue will not 
allocate memory
-        JsonbValue* value = doc->getValue()->findPath(r_raw, r_size, ".", 
nullptr);
+        JsonbValue* value = doc->getValue()->findPath(r_raw, r_size, nullptr);
         if (UNLIKELY(!value)) {
             StringOP::push_null_string(i, res_data, res_offsets, null_map);
             return;
@@ -572,7 +572,7 @@ private:
         }
 
         // value is NOT necessary to be deleted since JsonbValue will not 
allocate memory
-        JsonbValue* value = doc->getValue()->findPath(r_raw_str, r_str_size, 
".", nullptr);
+        JsonbValue* value = doc->getValue()->findPath(r_raw_str, r_str_size, 
nullptr);
 
         if (UNLIKELY(!value)) {
             if constexpr (!only_check_exists) {
diff --git 
a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md 
b/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md
index 6e673c683b..50466d2346 100644
--- a/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md
+++ b/docs/en/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md
@@ -58,6 +58,8 @@ jsonb_extract functions extract field specified by json_path 
from JSONB. A serie
 Exception handling is as follows:
 - if the field specified by json_path does not exist, return NULL
 - if datatype of the field specified by json_path is not the same with type of 
jsonb_extract_t, return t if it can be cast to t else NULL
+- If the key column value contains ".", double quotes are required in 
json_path, For example: SELECT jsonb_extract('{"k1.a":"abc","k2":300}', 
'$."k1.a"');
+- Use '$[last]' to get the last element of json_array, and '$[last-1]' to get 
the penultimate element, and so on.
 
 
 ## jsonb_exists_path and jsonb_type
diff --git 
a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md 
b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md
index 90937ec4b9..88837f2b66 100644
--- a/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md
+++ b/docs/zh-CN/docs/sql-manual/sql-functions/json-functions/jsonb_extract.md
@@ -45,6 +45,8 @@ DOUBLE jsonb_extract_double(JSONB j, VARCHAR json_path)
 STRING jsonb_extract_string(JSONB j, VARCHAR json_path)
 ```
 
+
+
 jsonb_extract是一系列函数,从JSONB类型的数据中提取json_path指定的字段,根据要提取的字段类型不同提供不同的系列函数。
 - jsonb_extract返回JSONB类型
 - jsonb_extract_isnull返回是否为json null的BOOLEAN类型
@@ -55,8 +57,10 @@ jsonb_extract是一系列函数,从JSONB类型的数据中提取json_path指
 - jsonb_extract_STRING返回STRING类型
 
 特殊情况处理如下:
-- 如果json_path指定的字段在JSON中不存在,返回NULL
-- 
如果json_path指定的字段在JSON中的实际类型和jsonb_extract_t指定的类型不一致,如果能无损转换成指定类型返回指定类型t,如果不能则返回NULL
+- 如果 json_path 指定的字段在JSON中不存在,返回NULL
+- 如果 json_path 
指定的字段在JSON中的实际类型和jsonb_extract_t指定的类型不一致,如果能无损转换成指定类型返回指定类型t,如果不能则返回NULL
+- 如果 key 列值包含 ".", json_path 中需要用双引号,例如 SELECT 
jsonb_extract('{"k1.a":"abc","k2":300}', '$."k1.a"'); 。
+- 获取 json_array 的最后一个元素可以用'$[last]',倒数第二个元素可以用'$[last-1]',以此类推。
 
 ### example
 
diff --git a/regression-test/data/jsonb_p0/test_jsonb_load_and_function.out 
b/regression-test/data/jsonb_p0/test_jsonb_load_and_function.out
index e6617ad6c3..51d4485d6a 100644
--- a/regression-test/data/jsonb_p0/test_jsonb_load_and_function.out
+++ b/regression-test/data/jsonb_p0/test_jsonb_load_and_function.out
@@ -40,6 +40,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N
 27     {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 1      \N      \N
@@ -62,6 +63,30 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N      \N
 27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      {}
+12     {"k1":"v31","k2":300}   {"k1":"v31","k2":300}
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
+26     \N      \N
+27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 1      \N      \N
@@ -84,6 +109,53 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   "v31"
 26     \N      \N
 27     {"k1":"v1","k2":200}    "v1"
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    {"k1.a1":"v31","k2":300}
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    "v31"
 
 -- !select --
 1      \N      \N
@@ -106,6 +178,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300
 26     \N      \N
 27     {"k1":"v1","k2":200}    200
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -128,6 +201,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -150,6 +224,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -172,6 +247,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -194,6 +270,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -216,6 +293,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -238,6 +316,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -260,6 +339,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -282,6 +362,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -304,6 +385,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
[{"k1":"v41","k2":400},1,"a",3.14]
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -326,6 +408,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v41","k2":400}
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -348,6 +431,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -370,6 +454,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   "a"
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -392,6 +477,30 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   3.14
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -414,6 +523,76 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   3.14
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   "a"
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -436,6 +615,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -458,6 +638,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N      \N
 27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 1      \N      \N
@@ -480,6 +661,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   v31
 26     \N      \N
 27     {"k1":"v1","k2":200}    v1
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -502,6 +684,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300
 26     \N      \N
 27     {"k1":"v1","k2":200}    200
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -524,6 +707,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -546,6 +730,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -568,6 +753,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -590,6 +776,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -612,6 +799,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -634,6 +822,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -656,6 +845,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -678,6 +868,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -700,6 +891,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
[{"k1":"v41","k2":400},1,"a",3.14]
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -722,6 +914,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v41","k2":400}
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -744,6 +937,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -766,6 +960,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   a
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -788,6 +983,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   3.14
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -810,6 +1006,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -832,6 +1029,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -854,6 +1052,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -876,6 +1075,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -898,6 +1098,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300
 26     \N      \N
 27     {"k1":"v1","k2":200}    200
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -920,6 +1121,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -942,6 +1144,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -964,6 +1167,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -986,6 +1190,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1008,6 +1213,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1030,6 +1236,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1052,6 +1259,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1074,6 +1282,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1096,6 +1305,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1118,6 +1328,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1140,6 +1351,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1162,6 +1374,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1184,6 +1397,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1206,6 +1420,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1228,6 +1443,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1250,6 +1466,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1272,6 +1489,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1294,6 +1512,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300
 26     \N      \N
 27     {"k1":"v1","k2":200}    200
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1316,6 +1535,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1338,6 +1558,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1360,6 +1581,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1382,6 +1604,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1404,6 +1627,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1426,6 +1650,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1448,6 +1673,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1470,6 +1696,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1492,6 +1719,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1514,6 +1742,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1536,6 +1765,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1558,6 +1788,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1580,6 +1811,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1602,6 +1834,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1624,6 +1857,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1646,6 +1880,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1668,6 +1903,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1690,6 +1926,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300.0
 26     \N      \N
 27     {"k1":"v1","k2":200}    200.0
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1712,6 +1949,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1734,6 +1972,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1756,6 +1995,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1778,6 +2018,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1800,6 +2041,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1822,6 +2064,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1844,6 +2087,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1866,6 +2110,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1888,6 +2133,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1910,6 +2156,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1932,6 +2179,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1.0
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1954,6 +2202,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1976,6 +2225,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   3.14
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1998,6 +2248,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2020,6 +2271,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2042,6 +2294,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2064,6 +2317,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2086,6 +2340,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2108,6 +2363,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2130,6 +2386,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2152,6 +2409,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2174,6 +2432,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2196,6 +2455,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2218,6 +2478,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2240,6 +2501,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2262,6 +2524,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2284,6 +2547,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2306,6 +2570,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2328,6 +2593,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2350,6 +2616,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2372,6 +2639,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2394,6 +2662,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2416,6 +2685,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2438,6 +2708,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2460,6 +2731,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2482,6 +2754,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2504,6 +2777,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2526,6 +2800,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2548,6 +2823,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2570,6 +2846,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2592,6 +2869,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2614,6 +2892,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2636,6 +2915,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2658,6 +2938,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2680,6 +2961,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2702,6 +2984,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2724,6 +3007,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2746,6 +3030,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2768,6 +3053,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2790,6 +3076,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2812,6 +3099,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2834,6 +3122,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    true
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    true
 
 -- !select --
 1      \N      \N
@@ -2856,6 +3145,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    true
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2878,6 +3168,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    true
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2900,6 +3191,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2922,6 +3214,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2944,6 +3237,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2966,6 +3260,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2988,6 +3283,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3010,6 +3306,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3032,6 +3329,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3054,6 +3352,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3076,6 +3375,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3098,6 +3398,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3120,6 +3421,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3142,6 +3444,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3164,6 +3467,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3186,6 +3490,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3208,6 +3513,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3230,6 +3536,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   object
 26     \N      \N
 27     {"k1":"v1","k2":200}    object
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    object
 
 -- !select --
 1      \N      \N
@@ -3252,6 +3559,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   string
 26     \N      \N
 27     {"k1":"v1","k2":200}    string
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3274,6 +3582,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   int
 26     \N      \N
 27     {"k1":"v1","k2":200}    int
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3296,6 +3605,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3318,6 +3628,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3340,6 +3651,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3362,6 +3674,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3384,6 +3697,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3406,6 +3720,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3428,6 +3743,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3450,6 +3766,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3472,6 +3789,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   array
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3494,6 +3812,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   object
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3516,6 +3835,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   int
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3538,6 +3858,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   string
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3560,6 +3881,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   double
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3582,6 +3904,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3604,6 +3927,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3626,6 +3950,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3648,6 +3973,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3670,6 +3996,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3692,6 +4019,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3714,6 +4042,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3736,6 +4065,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N      \N
 27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 1      \N      \N
@@ -3758,6 +4088,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3780,6 +4111,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3802,6 +4134,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3824,6 +4157,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3846,6 +4180,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3868,6 +4203,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N      \N
 27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 \N
@@ -3965,6 +4301,7 @@ false
 18     1
 26     \N
 27     1
+28     1
 
 -- !select --
 1
@@ -3996,6 +4333,7 @@ false
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   "v31"
 26     \N      \N
 27     {"k1":"v1","k2":200}    "v1"
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    null
 
 -- !select --
 1      \N      \N
@@ -4018,6 +4356,7 @@ false
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
[300,null]
 26     \N      \N
 27     {"k1":"v1","k2":200}    [200,null]
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    [null,null]
 
 -- !select --
 1      \N      \N
@@ -4040,6 +4379,7 @@ false
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
[300,null]
 26     \N      \N
 27     {"k1":"v1","k2":200}    [200,null]
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    [null,null]
 
 -- !select --
 1      \N      \N
@@ -4062,6 +4402,7 @@ false
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -4084,4 +4425,5 @@ false
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
["v41",400,"a"]
 26     \N      \N
 27     {"k1":"v1","k2":200}    [null,null,null]
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    [null,null,null]
 
diff --git 
a/regression-test/data/jsonb_p0/test_jsonb_load_unique_key_and_function.out 
b/regression-test/data/jsonb_p0/test_jsonb_load_unique_key_and_function.out
index d834c24dcd..01bc0b3de7 100644
--- a/regression-test/data/jsonb_p0/test_jsonb_load_unique_key_and_function.out
+++ b/regression-test/data/jsonb_p0/test_jsonb_load_unique_key_and_function.out
@@ -40,6 +40,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N
 27     {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 1      \N      \N
@@ -62,6 +63,30 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N      \N
 27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      {}
+12     {"k1":"v31","k2":300}   {"k1":"v31","k2":300}
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
+26     \N      \N
+27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 1      \N      \N
@@ -84,6 +109,53 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   "v31"
 26     \N      \N
 27     {"k1":"v1","k2":200}    "v1"
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    {"k1.a1":"v31","k2":300}
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    "v31"
 
 -- !select --
 1      \N      \N
@@ -106,6 +178,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300
 26     \N      \N
 27     {"k1":"v1","k2":200}    200
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -128,6 +201,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -150,6 +224,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -172,6 +247,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -194,6 +270,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -216,6 +293,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -238,6 +316,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -260,6 +339,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -282,6 +362,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -304,6 +385,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
[{"k1":"v41","k2":400},1,"a",3.14]
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -326,6 +408,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v41","k2":400}
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -348,6 +431,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -370,6 +454,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   "a"
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -392,6 +477,30 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   3.14
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -414,6 +523,76 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   3.14
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   "a"
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
+
+-- !select --
+1      \N      \N
+2      null    \N
+3      true    \N
+4      false   \N
+5      100     \N
+6      10000   \N
+7      1000000000      \N
+8      1152921504606846976     \N
+9      6.18    \N
+10     "abcd"  \N
+11     {}      \N
+12     {"k1":"v31","k2":300}   \N
+13     []      \N
+14     [123,456]       \N
+15     ["abc","def"]   \N
+16     [null,true,false,100,6.18,"abc"]        \N
+17     [{"k1":"v41","k2":400},1,"a",3.14]      \N
+18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
+26     \N      \N
+27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -436,6 +615,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -458,6 +638,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N      \N
 27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 1      \N      \N
@@ -480,6 +661,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   v31
 26     \N      \N
 27     {"k1":"v1","k2":200}    v1
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -502,6 +684,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300
 26     \N      \N
 27     {"k1":"v1","k2":200}    200
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -524,6 +707,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -546,6 +730,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -568,6 +753,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -590,6 +776,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -612,6 +799,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -634,6 +822,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -656,6 +845,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -678,6 +868,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -700,6 +891,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
[{"k1":"v41","k2":400},1,"a",3.14]
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -722,6 +914,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v41","k2":400}
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -744,6 +937,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -766,6 +960,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   a
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -788,6 +983,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   3.14
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -810,6 +1006,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -832,6 +1029,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -854,6 +1052,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -876,6 +1075,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -898,6 +1098,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300
 26     \N      \N
 27     {"k1":"v1","k2":200}    200
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -920,6 +1121,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -942,6 +1144,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -964,6 +1167,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -986,6 +1190,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1008,6 +1213,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1030,6 +1236,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1052,6 +1259,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1074,6 +1282,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1096,6 +1305,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1118,6 +1328,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1140,6 +1351,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1162,6 +1374,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1184,6 +1397,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1206,6 +1420,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1228,6 +1443,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1250,6 +1466,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1272,6 +1489,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1294,6 +1512,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300
 26     \N      \N
 27     {"k1":"v1","k2":200}    200
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1316,6 +1535,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1338,6 +1558,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1360,6 +1581,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1382,6 +1604,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1404,6 +1627,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1426,6 +1650,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1448,6 +1673,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1470,6 +1696,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1492,6 +1719,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1514,6 +1742,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1536,6 +1765,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1558,6 +1788,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1580,6 +1811,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1602,6 +1834,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1624,6 +1857,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1646,6 +1880,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1668,6 +1903,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1690,6 +1926,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   300.0
 26     \N      \N
 27     {"k1":"v1","k2":200}    200.0
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1712,6 +1949,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1734,6 +1972,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1756,6 +1995,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1778,6 +2018,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1800,6 +2041,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1822,6 +2064,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1844,6 +2087,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1866,6 +2110,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1888,6 +2133,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1910,6 +2156,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1932,6 +2179,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   1.0
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1954,6 +2202,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1976,6 +2225,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   3.14
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -1998,6 +2248,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2020,6 +2271,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2042,6 +2294,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2064,6 +2317,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2086,6 +2340,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2108,6 +2363,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2130,6 +2386,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2152,6 +2409,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2174,6 +2432,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2196,6 +2455,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2218,6 +2478,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2240,6 +2501,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2262,6 +2524,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2284,6 +2547,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2306,6 +2570,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2328,6 +2593,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2350,6 +2616,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2372,6 +2639,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2394,6 +2662,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2416,6 +2685,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2438,6 +2708,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2460,6 +2731,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2482,6 +2754,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2504,6 +2777,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2526,6 +2800,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2548,6 +2823,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2570,6 +2846,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2592,6 +2869,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2614,6 +2892,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2636,6 +2915,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2658,6 +2938,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2680,6 +2961,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2702,6 +2984,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2724,6 +3007,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2746,6 +3030,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2768,6 +3053,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2790,6 +3076,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2812,6 +3099,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -2834,6 +3122,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    true
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    true
 
 -- !select --
 1      \N      \N
@@ -2856,6 +3145,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    true
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2878,6 +3168,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    true
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2900,6 +3191,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2922,6 +3214,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2944,6 +3237,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2966,6 +3260,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -2988,6 +3283,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3010,6 +3306,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3032,6 +3329,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3054,6 +3352,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3076,6 +3375,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3098,6 +3398,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3120,6 +3421,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3142,6 +3444,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3164,6 +3467,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   true
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3186,6 +3490,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3208,6 +3513,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   false
 26     \N      \N
 27     {"k1":"v1","k2":200}    false
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    false
 
 -- !select --
 1      \N      \N
@@ -3230,6 +3536,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   object
 26     \N      \N
 27     {"k1":"v1","k2":200}    object
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    object
 
 -- !select --
 1      \N      \N
@@ -3252,6 +3559,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   string
 26     \N      \N
 27     {"k1":"v1","k2":200}    string
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3274,6 +3582,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   int
 26     \N      \N
 27     {"k1":"v1","k2":200}    int
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3296,6 +3605,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3318,6 +3628,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3340,6 +3651,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3362,6 +3674,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3384,6 +3697,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3406,6 +3720,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3428,6 +3743,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3450,6 +3766,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3472,6 +3789,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   array
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3494,6 +3812,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   object
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3516,6 +3835,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   int
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3538,6 +3858,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   string
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3560,6 +3881,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   double
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3582,6 +3904,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3604,6 +3927,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3626,6 +3950,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3648,6 +3973,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3670,6 +3996,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3692,6 +4019,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3714,6 +4042,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3736,6 +4065,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N      \N
 27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 1      \N      \N
@@ -3758,6 +4088,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3780,6 +4111,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3802,6 +4134,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3824,6 +4157,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3846,6 +4180,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   \N
 26     \N      \N
 27     {"k1":"v1","k2":200}    \N
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    \N
 
 -- !select --
 1      \N      \N
@@ -3868,6 +4203,7 @@
 18     {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}   
{"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]}
 26     \N      \N
 27     {"k1":"v1","k2":200}    {"k1":"v1","k2":200}
+28     {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}    
{"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
 
 -- !select --
 \N
diff --git 
a/regression-test/suites/jsonb_p0/test_jsonb_load_and_function.groovy 
b/regression-test/suites/jsonb_p0/test_jsonb_load_and_function.groovy
index 85e6330f57..44cab6ac55 100644
--- a/regression-test/suites/jsonb_p0/test_jsonb_load_and_function.groovy
+++ b/regression-test/suites/jsonb_p0/test_jsonb_load_and_function.groovy
@@ -113,6 +113,7 @@ suite("test_jsonb_load_and_function", "p0") {
     // insert into valid json rows
     sql """INSERT INTO ${testTable} VALUES(26, NULL)"""
     sql """INSERT INTO ${testTable} VALUES(27, '{"k1":"v1", "k2": 200}')"""
+    sql """INSERT INTO ${testTable} VALUES(28, '{"a.b.c":{"k1.a1":"v31", "k2": 
300},"a":"niu"}')"""
 
     // insert into invalid json rows with enable_insert_strict=true
     // expect excepiton and no rows not changed
@@ -158,8 +159,11 @@ suite("test_jsonb_load_and_function", "p0") {
 
     // jsonb_extract
     qt_select "SELECT id, j, jsonb_extract(j, '\$') FROM ${testTable} ORDER BY 
id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.*') FROM ${testTable} ORDER 
BY id"
 
     qt_select "SELECT id, j, jsonb_extract(j, '\$.k1') FROM ${testTable} ORDER 
BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.\"a.b.c\"') FROM 
${testTable} ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.\"a.b.c\".\"k1.a1\"') FROM 
${testTable} ORDER BY id"
     qt_select "SELECT id, j, jsonb_extract(j, '\$.k2') FROM ${testTable} ORDER 
BY id"
 
     qt_select "SELECT id, j, jsonb_extract(j, '\$[0]') FROM ${testTable} ORDER 
BY id"
@@ -179,6 +183,10 @@ suite("test_jsonb_load_and_function", "p0") {
     qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[3]') FROM ${testTable} 
ORDER BY id"
     qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[4]') FROM ${testTable} 
ORDER BY id"
     qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[10]') FROM ${testTable} 
ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last]') FROM ${testTable} 
ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-1]') FROM 
${testTable} ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-2]') FROM 
${testTable} ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-10]') FROM 
${testTable} ORDER BY id"
 
     // jsonb_extract_string
     qt_select "SELECT id, j, jsonb_extract_string(j, '\$') FROM ${testTable} 
ORDER BY id"
diff --git 
a/regression-test/suites/jsonb_p0/test_jsonb_load_unique_key_and_function.groovy
 
b/regression-test/suites/jsonb_p0/test_jsonb_load_unique_key_and_function.groovy
index f52a287b3e..c298f5642b 100644
--- 
a/regression-test/suites/jsonb_p0/test_jsonb_load_unique_key_and_function.groovy
+++ 
b/regression-test/suites/jsonb_p0/test_jsonb_load_unique_key_and_function.groovy
@@ -92,6 +92,7 @@ suite("test_jsonb_unique_load_and_function", "p0") {
     // insert into valid json rows
     sql """INSERT INTO ${testTable} VALUES(26, NULL)"""
     sql """INSERT INTO ${testTable} VALUES(27, '{"k1":"v1", "k2": 200}')"""
+    sql """INSERT INTO ${testTable} VALUES(28, '{"a.b.c":{"k1.a1":"v31", "k2": 
300},"a":"niu"}')"""
 
     // insert into invalid json rows with enable_insert_strict=true
     // expect excepiton and no rows not changed
@@ -137,8 +138,11 @@ suite("test_jsonb_unique_load_and_function", "p0") {
 
     // jsonb_extract
     qt_select "SELECT id, j, jsonb_extract(j, '\$') FROM ${testTable} ORDER BY 
id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.*') FROM ${testTable} ORDER 
BY id"
 
     qt_select "SELECT id, j, jsonb_extract(j, '\$.k1') FROM ${testTable} ORDER 
BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.\"a.b.c\"') FROM 
${testTable} ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.\"a.b.c\".\"k1.a1\"') FROM 
${testTable} ORDER BY id"
     qt_select "SELECT id, j, jsonb_extract(j, '\$.k2') FROM ${testTable} ORDER 
BY id"
 
     qt_select "SELECT id, j, jsonb_extract(j, '\$[0]') FROM ${testTable} ORDER 
BY id"
@@ -158,6 +162,10 @@ suite("test_jsonb_unique_load_and_function", "p0") {
     qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[3]') FROM ${testTable} 
ORDER BY id"
     qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[4]') FROM ${testTable} 
ORDER BY id"
     qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[10]') FROM ${testTable} 
ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last]') FROM ${testTable} 
ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-1]') FROM 
${testTable} ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-2]') FROM 
${testTable} ORDER BY id"
+    qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[last-10]') FROM 
${testTable} ORDER BY id"
 
     // jsonb_extract_string
     qt_select "SELECT id, j, jsonb_extract_string(j, '\$') FROM ${testTable} 
ORDER BY id"


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to