You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by zy...@apache.org on 2023/06/30 06:29:28 UTC
[doris] branch master updated: [improve](jsonb)Invalid json path prompts an error instead of null (#19646)
This is an automated email from the ASF dual-hosted git repository.
zykkk 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 d76fa427a3 [improve](jsonb)Invalid json path prompts an error instead of null (#19646)
d76fa427a3 is described below
commit d76fa427a3006a02cea414c4496fd4397a0ed9df
Author: Liqf <10...@users.noreply.github.com>
AuthorDate: Fri Jun 30 14:29:21 2023 +0800
[improve](jsonb)Invalid json path prompts an error instead of null (#19646)
1. Invalid json path prompts an error instead of null:
before:
```sql
mysql> SELECT jsonb_extract('[{"k1":"v41","k2":400},1,"a",3.14]', '$[a]');
+-------------------------------------------------------------+
| jsonb_extract('[{"k1":"v41","k2":400},1,"a",3.14]', '$[a]') |
+-------------------------------------------------------------+
| NULL |
+-------------------------------------------------------------+
1 row in set (0.01 sec)
```
now
```sql
mysql> SELECT jsonb_extract('[{"k1":"v41","k2":400},1,"a",3.14]', '$[a]');
ERROR 1105 (HY000): errCode = 2, detailMessage = (127.0.0.1)[INVALID_ARGUMENT]Json path error: Invalid Json Path for value: $[a]
```
2. fix some problem: https://github.com/apache/doris/pull/19185
a. support negative numbers
```sql
mysql> SELECT jsonb_extract('[{"k1":"v41","k2":400},1,"a",3.14]', '$[-2]');
+--------------------------------------------------------------+
| jsonb_extract('[{"k1":"v41","k2":400},1,"a",3.14]', '$[-2]') |
+--------------------------------------------------------------+
| "a" |
+--------------------------------------------------------------+
1 row in set (0.02 sec)
```
b. Avoid using unnecessary memory
3. Supplementary regression test
---
be/src/util/jsonb_document.h | 247 ++-
be/src/util/jsonb_error.h | 2 +
be/src/vec/functions/function_jsonb.cpp | 68 +-
be/test/vec/function/function_jsonb_test.cpp | 83 +-
.../data/json_p0/test_json_load_and_function.out | 50 +-
.../test_json_load_unique_key_and_function.out | 50 +-
.../data/jsonb_p0/test_jsonb_load_and_function.out | 1940 ++++++++++++++++++--
.../test_jsonb_load_unique_key_and_function.out | 1940 ++++++++++++++++++--
.../jsonb_p0/test_jsonb_load_and_function.groovy | 90 +-
.../test_jsonb_load_unique_key_and_function.groovy | 90 +-
10 files changed, 3972 insertions(+), 588 deletions(-)
diff --git a/be/src/util/jsonb_document.h b/be/src/util/jsonb_document.h
index b18d3d47e0..d54e7291dd 100644
--- a/be/src/util/jsonb_document.h
+++ b/be/src/util/jsonb_document.h
@@ -72,6 +72,7 @@
#include <algorithm>
#include <cctype>
+#include <charconv>
#include <limits>
#include <string>
#include <type_traits>
@@ -144,6 +145,8 @@ constexpr char WILDCARD = '*';
constexpr char MINUS = '-';
constexpr char LAST[] = "last";
constexpr char ESCAPE = '\\';
+constexpr unsigned int MEMBER_CODE = 0;
+constexpr unsigned int ARRAY_CODE = 1;
/*
* JsonbDocument is the main object that accesses and queries JSONB packed
@@ -276,35 +279,43 @@ public:
skip_whitespace();
}
- void clear_legPtr() { legPtr = nullptr; }
+ void clear_leg_ptr() { leg_ptr = nullptr; }
- void set_legPtr(char* ptr) {
- clear_legPtr();
- legPtr = ptr;
+ void set_leg_ptr(char* ptr) {
+ clear_leg_ptr();
+ leg_ptr = ptr;
}
- char* get_legPtr() { return legPtr; }
+ char* get_leg_ptr() { return leg_ptr; }
- void clear_legLen() { legLen = 0; }
+ void clear_leg_len() { leg_len = 0; }
- void add_legLen() { legLen++; }
+ void add_leg_len() { leg_len++; }
- unsigned int get_legLen() { return legLen; }
+ unsigned int get_leg_len() const { return leg_len; }
void remove_escapes() {
int new_len = 0;
- for (int i = 0; i < legLen; i++) {
- if (legPtr[i] != '\\') {
- legPtr[new_len++] = legPtr[i];
+ for (int i = 0; i < leg_len; i++) {
+ if (leg_ptr[i] != '\\') {
+ leg_ptr[new_len++] = leg_ptr[i];
}
}
- legPtr[new_len] = '\0';
- legLen = new_len;
+ leg_ptr[new_len] = '\0';
+ leg_len = new_len;
}
- void set_hasEscapes(bool has) { hasEscapes = has; }
+ void set_has_escapes(bool has) { has_escapes = has; }
- bool get_hasEscapes() { return hasEscapes; }
+ bool get_has_escapes() const { return has_escapes; }
+
+ void set_is_invalid_json_path(bool has) { is_invalid_json_path = has; }
+
+ bool get_is_invalid_json_path() const { return is_invalid_json_path; }
+
+ void set_type(unsigned int code) { type = code; }
+
+ bool get_type() const { return type; }
private:
/// The current position in the stream.
@@ -314,19 +325,25 @@ private:
const char* const m_end;
///path leg ptr
- char* legPtr;
+ char* leg_ptr;
///path leg len
- unsigned int legLen;
+ unsigned int leg_len;
+
+ ///Whether to contain escape characters
+ bool has_escapes = false;
- ///
- bool hasEscapes = false;
+ ///Is the json path valid
+ bool is_invalid_json_path = false;
+
+ ///type: 0 is member 1 is array
+ unsigned int type;
};
class JsonbPath {
public:
// parse json path
- static bool parsePath(Stream* stream, JsonbValue* value);
+ static bool parsePath(Stream* stream);
static bool parse_array(Stream* stream);
static bool parse_member(Stream* stream);
@@ -513,12 +530,14 @@ public:
const char* getValuePtr() const;
// find the JSONB value by a key path string (null terminated)
- JsonbValue* findPath(const char* key_path, hDictFind handler = nullptr) {
- return findPath(key_path, (unsigned int)strlen(key_path), handler);
+ JsonbValue* findPath(const char* key_path, bool& is_invalid_json_path,
+ hDictFind handler = nullptr) {
+ return findPath(key_path, (unsigned int)strlen(key_path), is_invalid_json_path, handler);
}
// find the JSONB value by a key path string (with length)
- JsonbValue* findPath(const char* key_path, unsigned int len, hDictFind handler);
+ JsonbValue* findPath(const char* key_path, unsigned int len, bool& is_invalid_json_path,
+ hDictFind handler);
friend class JsonbDocument;
protected:
@@ -1189,82 +1208,144 @@ inline const char* JsonbValue::getValuePtr() const {
}
inline JsonbValue* JsonbValue::findPath(const char* key_path, unsigned int kp_len,
- hDictFind handler = nullptr) {
+ bool& is_invalid_json_path, hDictFind handler = nullptr) {
if (!key_path) return nullptr;
- if (kp_len == 0) return this;
+ if (kp_len == 0) {
+ is_invalid_json_path = true;
+ return nullptr;
+ }
Stream stream(key_path, kp_len);
stream.skip_whitespace();
- if (stream.exhausted() || stream.read() != SCOPE) return nullptr;
+ if (stream.exhausted() || stream.read() != SCOPE) {
+ is_invalid_json_path = true;
+ return nullptr;
+ }
JsonbValue* pval = this;
while (pval && !stream.exhausted()) {
stream.skip_whitespace();
- stream.clear_legPtr();
- stream.clear_legLen();
+ stream.clear_leg_ptr();
+ stream.clear_leg_len();
- if (!JsonbPath::parsePath(&stream, pval)) {
+ if (!JsonbPath::parsePath(&stream)) {
+ is_invalid_json_path = stream.get_is_invalid_json_path();
return nullptr;
}
- if (stream.get_legLen() == 0) {
+ if (stream.get_leg_len() == 0) {
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();
- }
+ if (stream.get_type() == MEMBER_CODE) {
+ if (LIKELY(pval->type_ == JsonbType::T_Object)) {
+ if (stream.get_leg_len() == 1 && *stream.get_leg_ptr() == WILDCARD) {
+ return pval;
+ } else if (stream.get_has_escapes()) {
+ stream.remove_escapes();
+ }
- pval = ((ObjectVal*)pval)->find(stream.get_legPtr(), stream.get_legLen(), handler);
+ pval = ((ObjectVal*)pval)
+ ->find(stream.get_leg_ptr(), stream.get_leg_len(), handler);
- if (!pval) return nullptr;
- } else if (LIKELY(pval->type_ == JsonbType::T_Array)) {
+ if (!pval) return nullptr;
+ } else {
+ return nullptr;
+ }
+ } else if (stream.get_type() == ARRAY_CODE) {
int index = 0;
- std::string idx_string(stream.get_legPtr(), stream.get_legLen());
+ std::string_view idx_string(stream.get_leg_ptr(), stream.get_leg_len());
- if (stream.get_legLen() == 1 && *stream.get_legPtr() == WILDCARD) {
- return pval;
- } else if (std::string(stream.get_legPtr(), 4) == LAST) {
+ if (stream.get_leg_len() == 1 && *stream.get_leg_ptr() == WILDCARD) {
+ if (LIKELY(pval->type_ == JsonbType::T_Array)) {
+ stream.skip(1);
+ stream.skip_whitespace();
+ continue;
+ } else {
+ return nullptr;
+ }
+ } else if (std::equal(LAST, LAST + 4, stream.get_leg_ptr(),
+ [](char c1, char c2) {
+ return std::tolower(c1) == std::tolower(c2);
+ }) &&
+ stream.get_leg_len() >= 4) {
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
+
+ auto result = std::from_chars(idx_string.data(),
+ idx_string.data() + idx_string.size(), index);
+ if (result.ec != std::errc()) {
+ is_invalid_json_path = true;
+ return nullptr;
}
- index = num - 1 - std::stoi(idx_string);
- } else if (stream.get_legLen() == 4) {
- index = ((ArrayVal*)pval)->numElem() - 1;
+
+ if (pval->type_ == JsonbType::T_Object) {
+ if (index == 0) {
+ continue;
+ } else {
+ return nullptr;
+ }
+ } else if (LIKELY(pval->type_ == JsonbType::T_Array)) {
+ size_t num = ((ArrayVal*)pval)->numElem();
+ if (index > num) return nullptr;
+ index = num - 1 - index;
+ } else {
+ return nullptr;
+ }
+ } else if (stream.get_leg_len() == 4) {
+ if (pval->type_ == JsonbType::T_Object) {
+ continue;
+ } else if (LIKELY(pval->type_ == JsonbType::T_Array)) {
+ index = ((ArrayVal*)pval)->numElem() - 1;
+ } else {
+ return nullptr;
+ }
+
} else {
- return nullptr; //invalid json path
+ is_invalid_json_path = true;
+ return nullptr;
}
} 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
+ auto result = std::from_chars(idx_string.data(),
+ idx_string.data() + idx_string.size(), index);
+ if (result.ec != std::errc()) {
+ is_invalid_json_path = true;
+ return nullptr;
+ }
+
+ if (pval->type_ == JsonbType::T_Object) {
+ if (index == 0) {
+ continue;
+ } else {
+ return nullptr;
+ }
+ } else if (LIKELY(pval->type_ == JsonbType::T_Array)) {
+ if (std::abs(index) >= ((ArrayVal*)pval)->numElem()) return nullptr;
+ } else {
+ return nullptr;
}
}
- pval = ((ArrayVal*)pval)->get(index);
+ if (index >= 0) {
+ pval = ((ArrayVal*)pval)->get(index);
+ } else {
+ pval = ((ArrayVal*)pval)->get(((ArrayVal*)pval)->numElem() + index);
+ }
}
}
return pval;
}
-inline bool JsonbPath::parsePath(Stream* stream, JsonbValue* value) {
- if (stream->peek() == BEGIN_ARRAY && value->type() == JsonbType::T_Array) {
+inline bool JsonbPath::parsePath(Stream* stream) {
+ if (stream->peek() == BEGIN_ARRAY) {
return parse_array(stream);
- } else if (stream->peek() == BEGIN_MEMBER && value->type() == JsonbType::T_Object) {
+ } else if (stream->peek() == BEGIN_MEMBER) {
return parse_member(stream);
} else {
+ stream->set_is_invalid_json_path(true);
return false; //invalid json path
}
}
@@ -1272,30 +1353,37 @@ inline bool JsonbPath::parsePath(Stream* stream, JsonbValue* value) {
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->exhausted()) {
+ stream->set_is_invalid_json_path(true);
+ return false;
+ }
if (stream->peek() == WILDCARD) {
- stream->set_legPtr(const_cast<char*>(stream->position()));
- stream->add_legLen();
+ stream->set_leg_ptr(const_cast<char*>(stream->position()));
+ stream->add_leg_len();
stream->skip(1);
if (stream->peek() == END_ARRAY) {
+ stream->set_type(ARRAY_CODE);
return true;
} else {
- return false; //invalid json path
+ stream->set_is_invalid_json_path(true);
+ return false;
}
}
- stream->set_legPtr(const_cast<char*>(stream->position()));
+ stream->set_leg_ptr(const_cast<char*>(stream->position()));
for (; !stream->exhausted() && stream->peek() != END_ARRAY; stream->skip(1)) {
- stream->add_legLen();
+ stream->add_leg_len();
}
if (!stream->exhausted() && stream->peek() == END_ARRAY) {
stream->skip(1);
+ stream->set_type(ARRAY_CODE);
return true;
} else {
- return false; //invalid json path
+ stream->set_is_invalid_json_path(true);
+ return false;
}
}
@@ -1303,31 +1391,35 @@ 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->exhausted()) {
+ stream->set_is_invalid_json_path(true);
+ return false;
+ }
if (stream->peek() == WILDCARD) {
- stream->set_legPtr(const_cast<char*>(stream->position()));
- stream->add_legLen();
+ stream->set_leg_ptr(const_cast<char*>(stream->position()));
+ stream->add_leg_len();
stream->skip(1);
+ stream->set_type(MEMBER_CODE);
return true;
}
- stream->set_legPtr(const_cast<char*>(stream->position()));
+ stream->set_leg_ptr(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->add_leg_len();
stream->skip(1);
- stream->add_legLen();
- stream->set_hasEscapes(true);
+ stream->add_leg_len();
+ stream->set_has_escapes(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));
+ stream->set_leg_ptr(const_cast<char*>(++left_quotation_marks));
continue;
} else {
right_quotation_marks = stream->position();
@@ -1340,13 +1432,16 @@ inline bool JsonbPath::parse_member(Stream* stream) {
}
}
- stream->add_legLen();
+ stream->add_leg_len();
}
if (left_quotation_marks != nullptr && right_quotation_marks == nullptr) {
+ stream->set_is_invalid_json_path(true);
return false; //invalid json path
}
+ stream->set_type(MEMBER_CODE);
+
return true;
}
diff --git a/be/src/util/jsonb_error.h b/be/src/util/jsonb_error.h
index 2ad632fb8b..49c061a32f 100644
--- a/be/src/util/jsonb_error.h
+++ b/be/src/util/jsonb_error.h
@@ -56,6 +56,7 @@ enum class JsonbErrType {
E_NESTING_LVL_OVERFLOW,
E_INVALID_DOCU_COMPAT,
E_EXCEPTION,
+ E_INVALID_JSON_PATH,
// new error code should always be added above
E_NUM_ERRORS
@@ -107,6 +108,7 @@ private:
"Object or array has too many nesting levels",
"Invalid document",
"Exception throwed",
+ "Invalid Json Path",
nullptr /* E_NUM_ERRORS */
};
diff --git a/be/src/vec/functions/function_jsonb.cpp b/be/src/vec/functions/function_jsonb.cpp
index ac62c59ef7..42bdbe4b85 100644
--- a/be/src/vec/functions/function_jsonb.cpp
+++ b/be/src/vec/functions/function_jsonb.cpp
@@ -375,6 +375,8 @@ public:
auto& rdata = jsonb_path_column->get_chars();
auto& roffsets = jsonb_path_column->get_offsets();
+ bool is_invalid_json_path = false;
+
// execute Impl
if constexpr (std::is_same_v<typename Impl::ReturnType, DataTypeString> ||
std::is_same_v<typename Impl::ReturnType, DataTypeJsonb>) {
@@ -382,26 +384,36 @@ public:
auto& res_offsets = res->get_offsets();
if (col_const[0]) {
Impl::scalar_vector(context, jsonb_data_column->get_data_at(0), rdata, roffsets,
- res_data, res_offsets, null_map->get_data());
+ res_data, res_offsets, null_map->get_data(),
+ is_invalid_json_path);
} else if (col_const[1]) {
Impl::vector_scalar(context, ldata, loffsets, jsonb_path_column->get_data_at(0),
- res_data, res_offsets, null_map->get_data());
+ res_data, res_offsets, null_map->get_data(),
+ is_invalid_json_path);
} else {
Impl::vector_vector(context, ldata, loffsets, rdata, roffsets, res_data,
- res_offsets, null_map->get_data());
+ res_offsets, null_map->get_data(), is_invalid_json_path);
}
} else {
if (col_const[0]) {
Impl::scalar_vector(context, jsonb_data_column->get_data_at(0), rdata, roffsets,
- res->get_data(), null_map->get_data());
+ res->get_data(), null_map->get_data(), is_invalid_json_path);
} else if (col_const[1]) {
Impl::vector_scalar(context, ldata, loffsets, jsonb_path_column->get_data_at(0),
- res->get_data(), null_map->get_data());
+ res->get_data(), null_map->get_data(), is_invalid_json_path);
} else {
Impl::vector_vector(context, ldata, loffsets, rdata, roffsets, res->get_data(),
- null_map->get_data());
+ null_map->get_data(), is_invalid_json_path);
}
}
+
+ if (is_invalid_json_path) {
+ return Status::InvalidArgument(
+ "Json path error: {} for value: {}",
+ JsonbErrMsg::getErrMsg(JsonbErrType::E_INVALID_JSON_PATH),
+ std::string_view(reinterpret_cast<const char*>(rdata.data()), rdata.size()));
+ }
+
block.get_by_position(result).column =
ColumnNullable::create(std::move(res), std::move(null_map));
return Status::OK();
@@ -420,7 +432,7 @@ private:
const std::unique_ptr<JsonbWriter>& writer,
std::unique_ptr<JsonbToJson>& formater,
const char* l_raw, int l_size, const char* r_raw,
- int r_size) {
+ int r_size, bool& is_invalid_json_path) {
String path(r_raw, r_size);
if (null_map[i]) {
@@ -436,8 +448,9 @@ private:
}
// value is NOT necessary to be deleted since JsonbValue will not allocate memory
- JsonbValue* value = doc->getValue()->findPath(r_raw, r_size, nullptr);
- if (UNLIKELY(!value)) {
+ JsonbValue* value = doc->getValue()->findPath(r_raw, r_size, is_invalid_json_path, nullptr);
+
+ if (UNLIKELY(!value) || is_invalid_json_path) {
StringOP::push_null_string(i, res_data, res_offsets, null_map);
return;
}
@@ -494,7 +507,8 @@ public:
const ColumnString::Offsets& loffsets,
const ColumnString::Chars& rdata,
const ColumnString::Offsets& roffsets, ColumnString::Chars& res_data,
- ColumnString::Offsets& res_offsets, NullMap& null_map) {
+ ColumnString::Offsets& res_offsets, NullMap& null_map,
+ bool& is_invalid_json_path) {
size_t input_rows_count = loffsets.size();
res_offsets.resize(input_rows_count);
@@ -513,13 +527,13 @@ public:
const char* r_raw = reinterpret_cast<const char*>(&rdata[roffsets[i - 1]]);
inner_loop_impl(i, res_data, res_offsets, null_map, writer, formater, l_raw, l_size,
- r_raw, r_size);
+ r_raw, r_size, is_invalid_json_path);
} //for
} //function
static void vector_scalar(FunctionContext* context, const ColumnString::Chars& ldata,
const ColumnString::Offsets& loffsets, const StringRef& rdata,
ColumnString::Chars& res_data, ColumnString::Offsets& res_offsets,
- NullMap& null_map) {
+ NullMap& null_map, bool& is_invalid_json_path) {
size_t input_rows_count = loffsets.size();
res_offsets.resize(input_rows_count);
@@ -535,13 +549,14 @@ public:
const char* l_raw = reinterpret_cast<const char*>(&ldata[loffsets[i - 1]]);
inner_loop_impl(i, res_data, res_offsets, null_map, writer, formater, l_raw, l_size,
- rdata.data, rdata.size);
+ rdata.data, rdata.size, is_invalid_json_path);
} //for
} //function
static void scalar_vector(FunctionContext* context, const StringRef& ldata,
const ColumnString::Chars& rdata,
const ColumnString::Offsets& roffsets, ColumnString::Chars& res_data,
- ColumnString::Offsets& res_offsets, NullMap& null_map) {
+ ColumnString::Offsets& res_offsets, NullMap& null_map,
+ bool& is_invalid_json_path) {
size_t input_rows_count = roffsets.size();
res_offsets.resize(input_rows_count);
@@ -557,7 +572,7 @@ public:
const char* r_raw = reinterpret_cast<const char*>(&rdata[roffsets[i - 1]]);
inner_loop_impl(i, res_data, res_offsets, null_map, writer, formater, ldata.data,
- ldata.size, r_raw, r_size);
+ ldata.size, r_raw, r_size, is_invalid_json_path);
} //for
} //function
};
@@ -572,7 +587,8 @@ struct JsonbExtractImpl {
private:
static ALWAYS_INLINE void inner_loop_impl(size_t i, Container& res, NullMap& null_map,
const char* l_raw_str, int l_str_size,
- const char* r_raw_str, int r_str_size) {
+ const char* r_raw_str, int r_str_size,
+ bool& is_invalid_json_path) {
if (null_map[i]) {
res[i] = 0;
return;
@@ -587,9 +603,10 @@ 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, is_invalid_json_path, nullptr);
- if (UNLIKELY(!value)) {
+ if (UNLIKELY(!value) || is_invalid_json_path) {
if constexpr (!only_check_exists) {
null_map[i] = 1;
}
@@ -653,7 +670,7 @@ public:
const ColumnString::Offsets& loffsets,
const ColumnString::Chars& rdata,
const ColumnString::Offsets& roffsets, Container& res,
- NullMap& null_map) {
+ NullMap& null_map, bool& is_invalid_json_path) {
size_t size = loffsets.size();
res.resize(size);
@@ -668,13 +685,14 @@ public:
const char* r_raw_str = reinterpret_cast<const char*>(&rdata[roffsets[i - 1]]);
int r_str_size = roffsets[i] - roffsets[i - 1];
- inner_loop_impl(i, res, null_map, l_raw_str, l_str_size, r_raw_str, r_str_size);
+ inner_loop_impl(i, res, null_map, l_raw_str, l_str_size, r_raw_str, r_str_size,
+ is_invalid_json_path);
} //for
} //function
static void scalar_vector(FunctionContext* context, const StringRef& ldata,
const ColumnString::Chars& rdata,
const ColumnString::Offsets& roffsets, Container& res,
- NullMap& null_map) {
+ NullMap& null_map, bool& is_invalid_json_path) {
size_t size = roffsets.size();
res.resize(size);
@@ -686,12 +704,13 @@ public:
const char* r_raw_str = reinterpret_cast<const char*>(&rdata[roffsets[i - 1]]);
int r_str_size = roffsets[i] - roffsets[i - 1];
- inner_loop_impl(i, res, null_map, ldata.data, ldata.size, r_raw_str, r_str_size);
+ inner_loop_impl(i, res, null_map, ldata.data, ldata.size, r_raw_str, r_str_size,
+ is_invalid_json_path);
} //for
} //function
static void vector_scalar(FunctionContext* context, const ColumnString::Chars& ldata,
const ColumnString::Offsets& loffsets, const StringRef& rdata,
- Container& res, NullMap& null_map) {
+ Container& res, NullMap& null_map, bool& is_invalid_json_path) {
size_t size = loffsets.size();
res.resize(size);
@@ -703,7 +722,8 @@ public:
const char* l_raw_str = reinterpret_cast<const char*>(&ldata[loffsets[i - 1]]);
int l_str_size = loffsets[i] - loffsets[i - 1];
- inner_loop_impl(i, res, null_map, l_raw_str, l_str_size, rdata.data, rdata.size);
+ inner_loop_impl(i, res, null_map, l_raw_str, l_str_size, rdata.data, rdata.size,
+ is_invalid_json_path);
} //for
} //function
};
diff --git a/be/test/vec/function/function_jsonb_test.cpp b/be/test/vec/function/function_jsonb_test.cpp
index fe2052e9f1..3efc33a9f9 100644
--- a/be/test/vec/function/function_jsonb_test.cpp
+++ b/be/test/vec/function/function_jsonb_test.cpp
@@ -559,15 +559,16 @@ TEST(FunctionJsonbTEST, JsonbExtractTest) {
{{STRING("null"), STRING("$[0]")}, Null()},
{{STRING("true"), STRING("$[0]")}, Null()},
{{STRING("false"), STRING("$[0]")}, Null()},
- {{STRING("100"), STRING("$[0]")}, Null()}, //int8
- {{STRING("10000"), STRING("$[0]")}, Null()}, // int16
- {{STRING("1000000000"), STRING("$[0]")}, Null()}, // int32
- {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
- {{STRING("6.18"), STRING("$[0]")}, Null()}, // double
- {{STRING(R"("abcd")"), STRING("$[0]")}, Null()}, // string
- {{STRING("{}"), STRING("$[0]")}, Null()}, // empty object
- {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")}, Null()}, // object
- {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
+ {{STRING("100"), STRING("$[0]")}, Null()}, //int8
+ {{STRING("10000"), STRING("$[0]")}, Null()}, // int16
+ {{STRING("1000000000"), STRING("$[0]")}, Null()}, // int32
+ {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
+ {{STRING("6.18"), STRING("$[0]")}, Null()}, // double
+ {{STRING(R"("abcd")"), STRING("$[0]")}, Null()}, // string
+ {{STRING("{}"), STRING("$[0]")}, STRING("{}")}, // empty object
+ {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")},
+ STRING(R"({"k1":"v31","k2":300})")}, // object
+ {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
{{STRING("null"), STRING("$[1]")}, Null()},
{{STRING("true"), STRING("$[1]")}, Null()},
{{STRING("false"), STRING("$[1]")}, Null()},
@@ -620,17 +621,18 @@ TEST(FunctionJsonbTEST, JsonbExtractTest) {
{{STRING("null"), STRING("$[0].k1")}, Null()},
{{STRING("true"), STRING("$[0].k1")}, Null()},
{{STRING("false"), STRING("$[0].k1")}, Null()},
- {{STRING("100"), STRING("$[0].k1")}, Null()}, //int8
- {{STRING("10000"), STRING("$[0].k1")}, Null()}, // int16
- {{STRING("1000000000"), STRING("$[0].k1")}, Null()}, // int32
- {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // int64
- {{STRING("6.18"), STRING("$[0].k1")}, Null()}, // double
- {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()}, // string
- {{STRING("{}"), STRING("$[0].k1")}, Null()}, // empty object
- {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, Null()}, // object
- {{STRING("[]"), STRING("$[0].k1")}, Null()}, // empty array
- {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()}, // int array
- {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // string array
+ {{STRING("100"), STRING("$[0].k1")}, Null()}, //int8
+ {{STRING("10000"), STRING("$[0].k1")}, Null()}, // int16
+ {{STRING("1000000000"), STRING("$[0].k1")}, Null()}, // int32
+ {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // int64
+ {{STRING("6.18"), STRING("$[0].k1")}, Null()}, // double
+ {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()}, // string
+ {{STRING("{}"), STRING("$[0].k1")}, Null()}, // empty object
+ {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")},
+ STRING(R"("v31")")}, // object
+ {{STRING("[]"), STRING("$[0].k1")}, Null()}, // empty array
+ {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()}, // int array
+ {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // string array
{{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$[0].k1")},
Null()}, // multi type array
{{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), STRING("$[0].k1")},
@@ -702,15 +704,16 @@ TEST(FunctionJsonbTEST, JsonbExtractStringTest) {
{{STRING("null"), STRING("$[0]")}, Null()},
{{STRING("true"), STRING("$[0]")}, Null()},
{{STRING("false"), STRING("$[0]")}, Null()},
- {{STRING("100"), STRING("$[0]")}, Null()}, //int8
- {{STRING("10000"), STRING("$[0]")}, Null()}, // int16
- {{STRING("1000000000"), STRING("$[0]")}, Null()}, // int32
- {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
- {{STRING("6.18"), STRING("$[0]")}, Null()}, // double
- {{STRING(R"("abcd")"), STRING("$[0]")}, Null()}, // string
- {{STRING("{}"), STRING("$[0]")}, Null()}, // empty object
- {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")}, Null()}, // object
- {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
+ {{STRING("100"), STRING("$[0]")}, Null()}, //int8
+ {{STRING("10000"), STRING("$[0]")}, Null()}, // int16
+ {{STRING("1000000000"), STRING("$[0]")}, Null()}, // int32
+ {{STRING("1152921504606846976"), STRING("$[0]")}, Null()}, // int64
+ {{STRING("6.18"), STRING("$[0]")}, Null()}, // double
+ {{STRING(R"("abcd")"), STRING("$[0]")}, Null()}, // string
+ {{STRING("{}"), STRING("$[0]")}, STRING("{}")}, // empty object
+ {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0]")},
+ STRING(R"({"k1":"v31","k2":300})")}, // object
+ {{STRING("[]"), STRING("$[0]")}, Null()}, // empty array
{{STRING("null"), STRING("$[1]")}, Null()},
{{STRING("true"), STRING("$[1]")}, Null()},
{{STRING("false"), STRING("$[1]")}, Null()},
@@ -763,17 +766,17 @@ TEST(FunctionJsonbTEST, JsonbExtractStringTest) {
{{STRING("null"), STRING("$[0].k1")}, Null()},
{{STRING("true"), STRING("$[0].k1")}, Null()},
{{STRING("false"), STRING("$[0].k1")}, Null()},
- {{STRING("100"), STRING("$[0].k1")}, Null()}, //int8
- {{STRING("10000"), STRING("$[0].k1")}, Null()}, // int16
- {{STRING("1000000000"), STRING("$[0].k1")}, Null()}, // int32
- {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // int64
- {{STRING("6.18"), STRING("$[0].k1")}, Null()}, // double
- {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()}, // string
- {{STRING("{}"), STRING("$[0].k1")}, Null()}, // empty object
- {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, Null()}, // object
- {{STRING("[]"), STRING("$[0].k1")}, Null()}, // empty array
- {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()}, // int array
- {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // string array
+ {{STRING("100"), STRING("$[0].k1")}, Null()}, //int8
+ {{STRING("10000"), STRING("$[0].k1")}, Null()}, // int16
+ {{STRING("1000000000"), STRING("$[0].k1")}, Null()}, // int32
+ {{STRING("1152921504606846976"), STRING("$[0].k1")}, Null()}, // int64
+ {{STRING("6.18"), STRING("$[0].k1")}, Null()}, // double
+ {{STRING(R"("abcd")"), STRING("$[0].k1")}, Null()}, // string
+ {{STRING("{}"), STRING("$[0].k1")}, Null()}, // empty object
+ {{STRING(R"({"k1":"v31", "k2": 300})"), STRING("$[0].k1")}, STRING(R"(v31)")}, // object
+ {{STRING("[]"), STRING("$[0].k1")}, Null()}, // empty array
+ {{STRING("[123, 456]"), STRING("$[0].k1")}, Null()}, // int array
+ {{STRING(R"(["abc", "def"])"), STRING("$[0].k1")}, Null()}, // string array
{{STRING(R"([null, true, false, 100, 6.18, "abc"])"), STRING("$[0].k1")},
Null()}, // multi type array
{{STRING(R"([{"k1":"v41", "k2": 400}, 1, "a", 3.14])"), STRING("$[0].k1")},
diff --git a/regression-test/data/json_p0/test_json_load_and_function.out b/regression-test/data/json_p0/test_json_load_and_function.out
index 51d4485d6a..21c25c4ff9 100644
--- a/regression-test/data/json_p0/test_json_load_and_function.out
+++ b/regression-test/data/json_p0/test_json_load_and_function.out
@@ -191,17 +191,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} {}
+12 {"k1":"v31","k2":300} {"k1":"v31","k2":300}
13 [] \N
14 [123,456] 123
15 ["abc","def"] "abc"
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400}
-18 {"k1":"v31","k2":300,"a1":[{"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} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \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
@@ -697,17 +697,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} {}
+12 {"k1":"v31","k2":300} {"k1":"v31","k2":300}
13 [] \N
14 [123,456] 123
15 ["abc","def"] abc
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400}
-18 {"k1":"v31","k2":300,"a1":[{"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} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \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
@@ -2767,17 +2767,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} false
+12 {"k1":"v31","k2":300} false
13 [] \N
14 [123,456] false
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] true
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
+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
+27 {"k1":"v1","k2":200} false
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
-- !select --
1 \N \N
@@ -3181,17 +3181,17 @@
8 1152921504606846976 false
9 6.18 false
10 "abcd" false
-11 {} false
-12 {"k1":"v31","k2":300} false
+11 {} true
+12 {"k1":"v31","k2":300} true
13 [] false
14 [123,456] true
15 ["abc","def"] true
16 [null,true,false,100,6.18,"abc"] true
17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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
+27 {"k1":"v1","k2":200} true
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} true
-- !select --
1 \N \N
@@ -3595,17 +3595,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} object
+12 {"k1":"v31","k2":300} object
13 [] \N
14 [123,456] int
15 ["abc","def"] string
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] object
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
+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
+27 {"k1":"v1","k2":200} object
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} object
-- !select --
1 \N \N
diff --git a/regression-test/data/json_p0/test_json_load_unique_key_and_function.out b/regression-test/data/json_p0/test_json_load_unique_key_and_function.out
index 01bc0b3de7..f63959c2e0 100644
--- a/regression-test/data/json_p0/test_json_load_unique_key_and_function.out
+++ b/regression-test/data/json_p0/test_json_load_unique_key_and_function.out
@@ -191,17 +191,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} {}
+12 {"k1":"v31","k2":300} {"k1":"v31","k2":300}
13 [] \N
14 [123,456] 123
15 ["abc","def"] "abc"
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400}
-18 {"k1":"v31","k2":300,"a1":[{"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} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \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
@@ -697,17 +697,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} {}
+12 {"k1":"v31","k2":300} {"k1":"v31","k2":300}
13 [] \N
14 [123,456] 123
15 ["abc","def"] abc
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400}
-18 {"k1":"v31","k2":300,"a1":[{"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} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \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
@@ -2767,17 +2767,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} false
+12 {"k1":"v31","k2":300} false
13 [] \N
14 [123,456] false
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] true
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
+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
+27 {"k1":"v1","k2":200} false
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
-- !select --
1 \N \N
@@ -3181,17 +3181,17 @@
8 1152921504606846976 false
9 6.18 false
10 "abcd" false
-11 {} false
-12 {"k1":"v31","k2":300} false
+11 {} true
+12 {"k1":"v31","k2":300} true
13 [] false
14 [123,456] true
15 ["abc","def"] true
16 [null,true,false,100,6.18,"abc"] true
17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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
+27 {"k1":"v1","k2":200} true
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} true
-- !select --
1 \N \N
@@ -3595,17 +3595,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} object
+12 {"k1":"v31","k2":300} object
13 [] \N
14 [123,456] int
15 ["abc","def"] string
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] object
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
+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
+27 {"k1":"v1","k2":200} object
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} object
-- !select --
1 \N \N
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 cd10f5cb1d..00944828bd 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
@@ -42,7 +42,7 @@
27 {"k1":"v1","k2":200}
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
--- !select --
+-- !jsonb_extract_select --
1 \N \N
2 null null
3 true true
@@ -191,17 +191,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} {}
+12 {"k1":"v31","k2":300} {"k1":"v31","k2":300}
13 [] \N
14 [123,456] 123
15 ["abc","def"] "abc"
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400}
-18 {"k1":"v31","k2":300,"a1":[{"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} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \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
@@ -548,6 +548,29 @@
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
@@ -619,6 +642,75 @@
-- !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]} {"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
+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]} \N
+26 \N \N
+27 {"k1":"v1","k2":200} \N
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
+
+-- !jsonb_extract_string_select --
+1 \N \N
2 null null
3 true true
4 false false
@@ -697,17 +789,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} {}
+12 {"k1":"v31","k2":300} {"k1":"v31","k2":300}
13 [] \N
14 [123,456] 123
15 ["abc","def"] abc
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400}
-18 {"k1":"v31","k2":300,"a1":[{"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} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \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
@@ -1036,9 +1128,9 @@
2 null \N
3 true \N
4 false \N
-5 100 100
-6 10000 10000
-7 1000000000 1000000000
+5 100 \N
+6 10000 \N
+7 1000000000 \N
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
@@ -1049,7 +1141,7 @@
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
+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
@@ -1072,7 +1164,7 @@
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
+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
@@ -1089,15 +1181,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} 300
+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]} 300
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} a
26 \N \N
-27 {"k1":"v1","k2":200} 200
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1114,11 +1206,11 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 123
+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
+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
@@ -1137,10 +1229,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 456
+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] 1
+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
@@ -1164,7 +1256,7 @@
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
+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
@@ -1185,9 +1277,9 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] 100
+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
+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
@@ -1215,14 +1307,14 @@
27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
--- !select --
+-- !jsonb_extract_int_select --
1 \N \N
2 null \N
3 true \N
4 false \N
-5 100 \N
-6 10000 \N
-7 1000000000 \N
+5 100 100
+6 10000 10000
+7 1000000000 1000000000
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
@@ -1273,15 +1365,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} \N
+12 {"k1":"v31","k2":300} 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]} \N
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300
26 \N \N
-27 {"k1":"v1","k2":200} \N
+27 {"k1":"v1","k2":200} 200
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1298,7 +1390,7 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] \N
+14 [123,456] 123
15 ["abc","def"] \N
16 [null,true,false,100,6.18,"abc"] \N
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
@@ -1321,10 +1413,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] \N
+14 [123,456] 456
15 ["abc","def"] \N
16 [null,true,false,100,6.18,"abc"] \N
-17 [{"k1":"v41","k2":400},1,"a",3.14] \N
+17 [{"k1":"v41","k2":400},1,"a",3.14] 1
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
26 \N \N
27 {"k1":"v1","k2":200} \N
@@ -1348,7 +1440,7 @@
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
+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
@@ -1369,7 +1461,7 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
+16 [null,true,false,100,6.18,"abc"] 100
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
@@ -1450,10 +1542,10 @@
2 null \N
3 true \N
4 false \N
-5 100 100
-6 10000 10000
-7 1000000000 1000000000
-8 1152921504606846976 1152921504606846976
+5 100 \N
+6 10000 \N
+7 1000000000 \N
+8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
11 {} \N
@@ -1503,15 +1595,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} 300
+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]} 300
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
26 \N \N
-27 {"k1":"v1","k2":200} 200
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1528,11 +1620,11 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 123
+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
+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
@@ -1551,10 +1643,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 456
+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] 1
+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
@@ -1599,7 +1691,7 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] 100
+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
@@ -1716,7 +1808,7 @@
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
+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
@@ -1762,7 +1854,7 @@
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
+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
@@ -1813,15 +1905,15 @@
27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
--- !select --
+-- !jsonb_extract_bigint_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
+5 100 100
+6 10000 10000
+7 1000000000 1000000000
+8 1152921504606846976 1152921504606846976
9 6.18 \N
10 "abcd" \N
11 {} \N
@@ -1864,22 +1956,22 @@
2 null \N
3 true \N
4 false \N
-5 100 100.0
-6 10000 10000.0
-7 1000000000 1.0E9
-8 1152921504606846976 1.15292150460684698E18
-9 6.18 6.18
+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
+12 {"k1":"v31","k2":300} 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]} \N
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300
26 \N \N
-27 {"k1":"v1","k2":200} \N
+27 {"k1":"v1","k2":200} 200
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1896,7 +1988,7 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] \N
+14 [123,456] 123
15 ["abc","def"] \N
16 [null,true,false,100,6.18,"abc"] \N
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
@@ -1917,15 +2009,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} 300.0
+12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] \N
+14 [123,456] 456
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]} 300.0
+17 [{"k1":"v41","k2":400},1,"a",3.14] 1
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
26 \N \N
-27 {"k1":"v1","k2":200} 200.0
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1942,7 +2034,7 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 123.0
+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
@@ -1965,10 +2057,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 456.0
+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] 1.0
+16 [null,true,false,100,6.18,"abc"] 100
+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
@@ -2013,8 +2105,8 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] 100.0
-17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14
+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
@@ -2036,7 +2128,7 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] 6.18
+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
@@ -2130,7 +2222,7 @@
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
+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
@@ -2176,7 +2268,7 @@
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.0
+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
@@ -2222,7 +2314,7 @@
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
+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
@@ -2276,8 +2368,8 @@
-- !select --
1 \N \N
2 null \N
-3 true true
-4 false false
+3 true \N
+4 false \N
5 100 \N
6 10000 \N
7 1000000000 \N
@@ -2314,7 +2406,7 @@
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
+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
@@ -2381,7 +2473,7 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] true
+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
@@ -2404,7 +2496,30 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
+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
+
+-- !jsonb_extract_double_select --
+1 \N \N
+2 null \N
+3 true \N
+4 false \N
+5 100 100.0
+6 10000 10000.0
+7 1000000000 1.0E9
+8 1152921504606846976 1.15292150460684698E18
+9 6.18 6.18
+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
@@ -2446,12 +2561,58 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} \N
+12 {"k1":"v31","k2":300} 300.0
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]} 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
+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] 123.0
+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
+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] 456.0
+15 ["abc","def"] \N
+16 [null,true,false,100,6.18,"abc"] \N
+17 [{"k1":"v41","k2":400},1,"a",3.14] 1.0
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
26 \N \N
27 {"k1":"v1","k2":200} \N
@@ -2496,7 +2657,30 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
+16 [null,true,false,100,6.18,"abc"] 100.0
+17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14
+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"] 6.18
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
@@ -2636,7 +2820,7 @@
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
+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
@@ -2664,6 +2848,29 @@
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
@@ -2689,26 +2896,26 @@
-- !select --
1 \N \N
-2 null true
-3 true false
-4 false false
-5 100 false
-6 10000 false
-7 1000000000 false
-8 1152921504606846976 false
-9 6.18 false
-10 "abcd" false
-11 {} false
-12 {"k1":"v31","k2":300} false
-13 [] false
-14 [123,456] false
-15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] false
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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} false
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
+27 {"k1":"v1","k2":200} \N
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
1 \N \N
@@ -2722,15 +2929,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} false
+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]} false
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14
26 \N \N
-27 {"k1":"v1","k2":200} false
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -2745,15 +2952,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} false
+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]} false
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14
26 \N \N
-27 {"k1":"v1","k2":200} false
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -2770,10 +2977,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] false
-15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -2793,11 +3000,11 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] false
-15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] false
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \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.0
26 \N \N
27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
@@ -2818,8 +3025,8 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -2841,8 +3048,8 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -2864,9 +3071,9 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
+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
+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
@@ -2887,7 +3094,30 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
+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
+
+-- !jsonb_extract_bool_select --
+1 \N \N
+2 null \N
+3 true true
+4 false false
+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
@@ -2958,7 +3188,7 @@
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]} 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
@@ -2979,9 +3209,9 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
+16 [null,true,false,100,6.18,"abc"] true
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 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
@@ -3002,9 +3232,9 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
+16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 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
@@ -3027,7 +3257,7 @@
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]} 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
@@ -3050,7 +3280,7 @@
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]} 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
@@ -3103,26 +3333,1176 @@
-- !select --
1 \N \N
-2 null true
-3 true true
-4 false true
-5 100 true
-6 10000 true
-7 1000000000 true
-8 1152921504606846976 true
-9 6.18 true
-10 "abcd" true
-11 {} true
-12 {"k1":"v31","k2":300} true
-13 [] true
-14 [123,456] true
-15 ["abc","def"] true
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+
+-- !jsonb_extract_isnull_select --
+1 \N \N
+2 null true
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+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} false
+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]} 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
+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} false
+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]} 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
+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 {} false
+12 {"k1":"v31","k2":300} false
+13 [] \N
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+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] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] 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
+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"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] 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
+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"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] 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
+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"] false
+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
+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"] false
+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
+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
+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
+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]} 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
+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]} 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
+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]} 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
+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]} 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
+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]} 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
+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
+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
+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]} 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
+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]} 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
+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]} 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
+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]} 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
+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
+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]} 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
+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]} 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
+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
+
+-- !jsonb_exists_path_select --
+1 \N \N
+2 null true
+3 true true
+4 false true
+5 100 true
+6 10000 true
+7 1000000000 true
+8 1152921504606846976 true
+9 6.18 true
+10 "abcd" true
+11 {} true
+12 {"k1":"v31","k2":300} true
+13 [] true
+14 [123,456] true
+15 ["abc","def"] true
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] true
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} true
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} true
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} true
+12 {"k1":"v31","k2":300} true
+13 [] false
+14 [123,456] true
+15 ["abc","def"] true
16 [null,true,false,100,6.18,"abc"] true
17 [{"k1":"v41","k2":400},1,"a",3.14] true
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
+27 {"k1":"v1","k2":200} true
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} true
+
+-- !select --
+1 \N \N
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] true
+15 ["abc","def"] true
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] true
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] true
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] true
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3136,15 +4516,15 @@
9 6.18 false
10 "abcd" false
11 {} false
-12 {"k1":"v31","k2":300} true
+12 {"k1":"v31","k2":300} false
13 [] false
14 [123,456] false
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
26 \N \N
-27 {"k1":"v1","k2":200} true
+27 {"k1":"v1","k2":200} false
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
-- !select --
@@ -3159,15 +4539,15 @@
9 6.18 false
10 "abcd" false
11 {} false
-12 {"k1":"v31","k2":300} true
+12 {"k1":"v31","k2":300} false
13 [] false
14 [123,456] false
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
26 \N \N
-27 {"k1":"v1","k2":200} true
+27 {"k1":"v1","k2":200} false
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
-- !select --
@@ -3184,11 +4564,11 @@
11 {} false
12 {"k1":"v31","k2":300} false
13 [] false
-14 [123,456] true
-15 ["abc","def"] true
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3207,11 +4587,11 @@
11 {} false
12 {"k1":"v31","k2":300} false
13 [] false
-14 [123,456] true
-15 ["abc","def"] true
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3232,9 +4612,9 @@
13 [] false
14 [123,456] false
15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3255,9 +4635,9 @@
13 [] false
14 [123,456] false
15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3278,9 +4658,9 @@
13 [] false
14 [123,456] false
15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
+16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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
@@ -3301,7 +4681,7 @@
13 [] false
14 [123,456] false
15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
+16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
26 \N \N
@@ -3349,7 +4729,7 @@
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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
@@ -3441,7 +4821,7 @@
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true
+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
@@ -3487,7 +4867,7 @@
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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
@@ -3515,7 +4895,7 @@
27 {"k1":"v1","k2":200} false
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
--- !select --
+-- !jsonb_type_select --
1 \N \N
2 null null
3 true bool
@@ -3595,17 +4975,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} object
+12 {"k1":"v31","k2":300} object
13 [] \N
14 [123,456] int
15 ["abc","def"] string
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] object
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
+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
+27 {"k1":"v1","k2":200} object
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} object
-- !select --
1 \N \N
@@ -3932,6 +5312,190 @@
-- !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]} 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
+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]} 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
+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]} 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
+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]} 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
+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
+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]} 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
+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]} 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
+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
+
+-- !cast_from_select --
+1 \N \N
+2 null \N
3 true true
4 false false
5 100 \N
@@ -4067,7 +5631,7 @@
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 --
+-- !cast_to_select --
1 \N \N
2 null \N
3 true true
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 01bc0b3de7..04946beaa1 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
@@ -42,7 +42,7 @@
27 {"k1":"v1","k2":200}
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"}
--- !select --
+-- !jsonb_extract_select --
1 \N \N
2 null null
3 true true
@@ -191,17 +191,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} {}
+12 {"k1":"v31","k2":300} {"k1":"v31","k2":300}
13 [] \N
14 [123,456] 123
15 ["abc","def"] "abc"
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400}
-18 {"k1":"v31","k2":300,"a1":[{"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} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \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
@@ -548,6 +548,29 @@
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
@@ -619,6 +642,75 @@
-- !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]} {"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
+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]} \N
+26 \N \N
+27 {"k1":"v1","k2":200} \N
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
+
+-- !jsonb_extract_string_select --
+1 \N \N
2 null null
3 true true
4 false false
@@ -697,17 +789,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} {}
+12 {"k1":"v31","k2":300} {"k1":"v31","k2":300}
13 [] \N
14 [123,456] 123
15 ["abc","def"] abc
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] {"k1":"v41","k2":400}
-18 {"k1":"v31","k2":300,"a1":[{"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} \N
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \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
@@ -1036,9 +1128,9 @@
2 null \N
3 true \N
4 false \N
-5 100 100
-6 10000 10000
-7 1000000000 1000000000
+5 100 \N
+6 10000 \N
+7 1000000000 \N
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
@@ -1049,7 +1141,7 @@
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
+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
@@ -1072,7 +1164,7 @@
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
+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
@@ -1089,15 +1181,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} 300
+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]} 300
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} a
26 \N \N
-27 {"k1":"v1","k2":200} 200
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1114,11 +1206,11 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 123
+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
+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
@@ -1137,10 +1229,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 456
+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] 1
+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
@@ -1164,7 +1256,7 @@
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
+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
@@ -1185,9 +1277,9 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] 100
+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
+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
@@ -1215,14 +1307,14 @@
27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
--- !select --
+-- !jsonb_extract_int_select --
1 \N \N
2 null \N
3 true \N
4 false \N
-5 100 \N
-6 10000 \N
-7 1000000000 \N
+5 100 100
+6 10000 10000
+7 1000000000 1000000000
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
@@ -1273,15 +1365,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} \N
+12 {"k1":"v31","k2":300} 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]} \N
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300
26 \N \N
-27 {"k1":"v1","k2":200} \N
+27 {"k1":"v1","k2":200} 200
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1298,7 +1390,7 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] \N
+14 [123,456] 123
15 ["abc","def"] \N
16 [null,true,false,100,6.18,"abc"] \N
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
@@ -1321,10 +1413,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] \N
+14 [123,456] 456
15 ["abc","def"] \N
16 [null,true,false,100,6.18,"abc"] \N
-17 [{"k1":"v41","k2":400},1,"a",3.14] \N
+17 [{"k1":"v41","k2":400},1,"a",3.14] 1
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
26 \N \N
27 {"k1":"v1","k2":200} \N
@@ -1348,7 +1440,7 @@
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
+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
@@ -1369,7 +1461,7 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
+16 [null,true,false,100,6.18,"abc"] 100
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
@@ -1450,10 +1542,10 @@
2 null \N
3 true \N
4 false \N
-5 100 100
-6 10000 10000
-7 1000000000 1000000000
-8 1152921504606846976 1152921504606846976
+5 100 \N
+6 10000 \N
+7 1000000000 \N
+8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
11 {} \N
@@ -1503,15 +1595,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} 300
+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]} 300
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
26 \N \N
-27 {"k1":"v1","k2":200} 200
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1528,11 +1620,11 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 123
+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
+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
@@ -1551,10 +1643,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 456
+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] 1
+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
@@ -1599,7 +1691,7 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] 100
+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
@@ -1716,7 +1808,7 @@
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
+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
@@ -1762,7 +1854,7 @@
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
+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
@@ -1813,15 +1905,15 @@
27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
--- !select --
+-- !jsonb_extract_bigint_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
+5 100 100
+6 10000 10000
+7 1000000000 1000000000
+8 1152921504606846976 1152921504606846976
9 6.18 \N
10 "abcd" \N
11 {} \N
@@ -1864,22 +1956,22 @@
2 null \N
3 true \N
4 false \N
-5 100 100.0
-6 10000 10000.0
-7 1000000000 1.0E9
-8 1152921504606846976 1.15292150460684698E18
-9 6.18 6.18
+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
+12 {"k1":"v31","k2":300} 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]} \N
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 300
26 \N \N
-27 {"k1":"v1","k2":200} \N
+27 {"k1":"v1","k2":200} 200
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1896,7 +1988,7 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] \N
+14 [123,456] 123
15 ["abc","def"] \N
16 [null,true,false,100,6.18,"abc"] \N
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
@@ -1917,15 +2009,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} 300.0
+12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] \N
+14 [123,456] 456
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]} 300.0
+17 [{"k1":"v41","k2":400},1,"a",3.14] 1
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
26 \N \N
-27 {"k1":"v1","k2":200} 200.0
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -1942,7 +2034,7 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 123.0
+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
@@ -1965,10 +2057,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] 456.0
+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] 1.0
+16 [null,true,false,100,6.18,"abc"] 100
+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
@@ -2013,8 +2105,8 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] 100.0
-17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14
+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
@@ -2036,7 +2128,7 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] 6.18
+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
@@ -2130,7 +2222,7 @@
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
+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
@@ -2176,7 +2268,7 @@
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.0
+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
@@ -2222,7 +2314,7 @@
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
+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
@@ -2276,8 +2368,8 @@
-- !select --
1 \N \N
2 null \N
-3 true true
-4 false false
+3 true \N
+4 false \N
5 100 \N
6 10000 \N
7 1000000000 \N
@@ -2314,7 +2406,7 @@
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
+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
@@ -2381,7 +2473,7 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] true
+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
@@ -2404,7 +2496,30 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
+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
+
+-- !jsonb_extract_double_select --
+1 \N \N
+2 null \N
+3 true \N
+4 false \N
+5 100 100.0
+6 10000 10000.0
+7 1000000000 1.0E9
+8 1152921504606846976 1.15292150460684698E18
+9 6.18 6.18
+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
@@ -2446,12 +2561,58 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} \N
+12 {"k1":"v31","k2":300} 300.0
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]} 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
+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] 123.0
+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
+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] 456.0
+15 ["abc","def"] \N
+16 [null,true,false,100,6.18,"abc"] \N
+17 [{"k1":"v41","k2":400},1,"a",3.14] 1.0
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
26 \N \N
27 {"k1":"v1","k2":200} \N
@@ -2496,7 +2657,30 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
+16 [null,true,false,100,6.18,"abc"] 100.0
+17 [{"k1":"v41","k2":400},1,"a",3.14] 3.14
+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"] 6.18
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
@@ -2636,7 +2820,7 @@
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
+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
@@ -2664,6 +2848,29 @@
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
@@ -2689,26 +2896,26 @@
-- !select --
1 \N \N
-2 null true
-3 true false
-4 false false
-5 100 false
-6 10000 false
-7 1000000000 false
-8 1152921504606846976 false
-9 6.18 false
-10 "abcd" false
-11 {} false
-12 {"k1":"v31","k2":300} false
-13 [] false
-14 [123,456] false
-15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] false
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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} false
-28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
+27 {"k1":"v1","k2":200} \N
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
1 \N \N
@@ -2722,15 +2929,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} false
+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]} false
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14
26 \N \N
-27 {"k1":"v1","k2":200} false
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -2745,15 +2952,15 @@
9 6.18 \N
10 "abcd" \N
11 {} \N
-12 {"k1":"v31","k2":300} false
+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]} false
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 3.14
26 \N \N
-27 {"k1":"v1","k2":200} false
+27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
-- !select --
@@ -2770,10 +2977,10 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] false
-15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -2793,11 +3000,11 @@
11 {} \N
12 {"k1":"v31","k2":300} \N
13 [] \N
-14 [123,456] false
-15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] false
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \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.0
26 \N \N
27 {"k1":"v1","k2":200} \N
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N
@@ -2818,8 +3025,8 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -2841,8 +3048,8 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
-17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -2864,9 +3071,9 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
+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
+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
@@ -2887,7 +3094,30 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] false
+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
+
+-- !jsonb_extract_bool_select --
+1 \N \N
+2 null \N
+3 true true
+4 false false
+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
@@ -2958,7 +3188,7 @@
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]} 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
@@ -2979,9 +3209,9 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
+16 [null,true,false,100,6.18,"abc"] true
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 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
@@ -3002,9 +3232,9 @@
13 [] \N
14 [123,456] \N
15 ["abc","def"] \N
-16 [null,true,false,100,6.18,"abc"] \N
+16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] \N
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} 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
@@ -3027,7 +3257,7 @@
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]} 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
@@ -3050,7 +3280,7 @@
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]} 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
@@ -3103,26 +3333,1176 @@
-- !select --
1 \N \N
-2 null true
-3 true true
-4 false true
-5 100 true
-6 10000 true
-7 1000000000 true
-8 1152921504606846976 true
-9 6.18 true
-10 "abcd" true
-11 {} true
-12 {"k1":"v31","k2":300} true
-13 [] true
-14 [123,456] true
-15 ["abc","def"] true
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+
+-- !jsonb_extract_isnull_select --
+1 \N \N
+2 null true
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+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} false
+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]} 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
+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} false
+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]} 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
+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 {} false
+12 {"k1":"v31","k2":300} false
+13 [] \N
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+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] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] 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
+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"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] 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
+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"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] 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
+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"] false
+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
+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"] false
+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
+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
+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
+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]} 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
+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]} 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
+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]} 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
+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]} 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
+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]} 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
+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
+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
+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]} 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
+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]} 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
+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]} 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
+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]} 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
+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
+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]} 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
+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]} 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
+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
+
+-- !jsonb_exists_path_select --
+1 \N \N
+2 null true
+3 true true
+4 false true
+5 100 true
+6 10000 true
+7 1000000000 true
+8 1152921504606846976 true
+9 6.18 true
+10 "abcd" true
+11 {} true
+12 {"k1":"v31","k2":300} true
+13 [] true
+14 [123,456] true
+15 ["abc","def"] true
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] true
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} true
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} true
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} true
+12 {"k1":"v31","k2":300} true
+13 [] false
+14 [123,456] true
+15 ["abc","def"] true
16 [null,true,false,100,6.18,"abc"] true
17 [{"k1":"v41","k2":400},1,"a",3.14] true
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
+27 {"k1":"v1","k2":200} true
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} true
+
+-- !select --
+1 \N \N
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] true
+15 ["abc","def"] true
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] true
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] true
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] true
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
+2 null false
+3 true false
+4 false false
+5 100 false
+6 10000 false
+7 1000000000 false
+8 1152921504606846976 false
+9 6.18 false
+10 "abcd" false
+11 {} false
+12 {"k1":"v31","k2":300} false
+13 [] false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] true
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3136,15 +4516,15 @@
9 6.18 false
10 "abcd" false
11 {} false
-12 {"k1":"v31","k2":300} true
+12 {"k1":"v31","k2":300} false
13 [] false
14 [123,456] false
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
26 \N \N
-27 {"k1":"v1","k2":200} true
+27 {"k1":"v1","k2":200} false
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
-- !select --
@@ -3159,15 +4539,15 @@
9 6.18 false
10 "abcd" false
11 {} false
-12 {"k1":"v31","k2":300} true
+12 {"k1":"v31","k2":300} false
13 [] false
14 [123,456] false
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true
+18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
26 \N \N
-27 {"k1":"v1","k2":200} true
+27 {"k1":"v1","k2":200} false
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
-- !select --
@@ -3184,11 +4564,11 @@
11 {} false
12 {"k1":"v31","k2":300} false
13 [] false
-14 [123,456] true
-15 ["abc","def"] true
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3207,11 +4587,11 @@
11 {} false
12 {"k1":"v31","k2":300} false
13 [] false
-14 [123,456] true
-15 ["abc","def"] true
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+14 [123,456] false
+15 ["abc","def"] false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3232,9 +4612,9 @@
13 [] false
14 [123,456] false
15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3255,9 +4635,9 @@
13 [] false
14 [123,456] false
15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
-17 [{"k1":"v41","k2":400},1,"a",3.14] true
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+16 [null,true,false,100,6.18,"abc"] false
+17 [{"k1":"v41","k2":400},1,"a",3.14] false
+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
@@ -3278,9 +4658,9 @@
13 [] false
14 [123,456] false
15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
+16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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
@@ -3301,7 +4681,7 @@
13 [] false
14 [123,456] false
15 ["abc","def"] false
-16 [null,true,false,100,6.18,"abc"] true
+16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
26 \N \N
@@ -3349,7 +4729,7 @@
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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
@@ -3441,7 +4821,7 @@
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} true
+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
@@ -3487,7 +4867,7 @@
15 ["abc","def"] false
16 [null,true,false,100,6.18,"abc"] false
17 [{"k1":"v41","k2":400},1,"a",3.14] false
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} false
+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
@@ -3515,7 +4895,7 @@
27 {"k1":"v1","k2":200} false
28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} false
--- !select --
+-- !jsonb_type_select --
1 \N \N
2 null null
3 true bool
@@ -3595,17 +4975,17 @@
8 1152921504606846976 \N
9 6.18 \N
10 "abcd" \N
-11 {} \N
-12 {"k1":"v31","k2":300} \N
+11 {} object
+12 {"k1":"v31","k2":300} object
13 [] \N
14 [123,456] int
15 ["abc","def"] string
16 [null,true,false,100,6.18,"abc"] null
17 [{"k1":"v41","k2":400},1,"a",3.14] object
-18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} \N
+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
+27 {"k1":"v1","k2":200} object
+28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} object
-- !select --
1 \N \N
@@ -3932,6 +5312,190 @@
-- !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]} 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
+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]} 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
+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]} 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
+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]} 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
+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
+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]} 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
+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]} 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
+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
+
+-- !cast_from_select --
+1 \N \N
+2 null \N
3 true true
4 false false
5 100 \N
@@ -4067,7 +5631,7 @@
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 --
+-- !cast_to_select --
1 \N \N
2 null \N
3 true true
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 b1a91d06f0..4daa5a79f3 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
@@ -144,7 +144,7 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT * FROM ${testTable} ORDER BY id"
// jsonb_extract
- qt_select "SELECT id, j, jsonb_extract(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_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"
@@ -170,12 +170,16 @@ suite("test_jsonb_load_and_function", "p0") {
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-0]') 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"
+ qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_string
- qt_select "SELECT id, j, jsonb_extract_string(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_string_select "SELECT id, j, jsonb_extract_string(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -197,9 +201,17 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_int
- qt_select "SELECT id, j, jsonb_extract_int(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_int_select "SELECT id, j, jsonb_extract_int(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -221,9 +233,17 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_bigint
- qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_bigint_select "SELECT id, j, jsonb_extract_bigint(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -245,10 +265,18 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_double
- qt_select "SELECT id, j, jsonb_extract_double(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_double_select "SELECT id, j, jsonb_extract_double(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -270,9 +298,17 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_bool
- qt_select "SELECT id, j, jsonb_extract_bool(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_bool_select "SELECT id, j, jsonb_extract_bool(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -294,9 +330,17 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_isnull
- qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_isnull_select "SELECT id, j, jsonb_extract_isnull(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -318,9 +362,17 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_exists_path
- qt_select "SELECT id, j, jsonb_exists_path(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_exists_path_select "SELECT id, j, jsonb_exists_path(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -342,9 +394,17 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_type
- qt_select "SELECT id, j, jsonb_type(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_type_select "SELECT id, j, jsonb_type(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_type(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_type(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -366,10 +426,18 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_type(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_type(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_type(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// CAST from JSONB
- qt_select "SELECT id, j, CAST(j AS BOOLEAN) FROM ${testTable} ORDER BY id"
+ qt_cast_from_select "SELECT id, j, CAST(j AS BOOLEAN) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(j AS SMALLINT) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(j AS INT) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(j AS BIGINT) FROM ${testTable} ORDER BY id"
@@ -377,7 +445,7 @@ suite("test_jsonb_load_and_function", "p0") {
qt_select "SELECT id, j, CAST(j AS STRING) FROM ${testTable} ORDER BY id"
// CAST to JSONB
- qt_select "SELECT id, j, CAST(CAST(j AS BOOLEAN) AS JSONB) FROM ${testTable} ORDER BY id"
+ qt_cast_to_select "SELECT id, j, CAST(CAST(j AS BOOLEAN) AS JSONB) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(CAST(j AS SMALLINT) AS JSONB) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(CAST(j AS INT) AS JSONB) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(CAST(j AS BIGINT) AS JSONB) 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 c298f5642b..6343b458ec 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
@@ -137,7 +137,7 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT * FROM ${testTable} ORDER BY id"
// jsonb_extract
- qt_select "SELECT id, j, jsonb_extract(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_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"
@@ -163,12 +163,16 @@ suite("test_jsonb_unique_load_and_function", "p0") {
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-0]') 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"
+ qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_string
- qt_select "SELECT id, j, jsonb_extract_string(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_string_select "SELECT id, j, jsonb_extract_string(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -190,9 +194,17 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_string(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_int
- qt_select "SELECT id, j, jsonb_extract_int(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_int_select "SELECT id, j, jsonb_extract_int(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -214,9 +226,17 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_int(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_bigint
- qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_bigint_select "SELECT id, j, jsonb_extract_bigint(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -238,10 +258,18 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bigint(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_double
- qt_select "SELECT id, j, jsonb_extract_double(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_double_select "SELECT id, j, jsonb_extract_double(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -263,9 +291,17 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_double(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_bool
- qt_select "SELECT id, j, jsonb_extract_bool(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_bool_select "SELECT id, j, jsonb_extract_bool(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -287,9 +323,17 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_bool(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_extract_isnull
- qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_extract_isnull_select "SELECT id, j, jsonb_extract_isnull(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -311,9 +355,17 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_extract_isnull(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_exists_path
- qt_select "SELECT id, j, jsonb_exists_path(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_exists_path_select "SELECT id, j, jsonb_exists_path(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -335,9 +387,17 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_exists_path(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// jsonb_type
- qt_select "SELECT id, j, jsonb_type(j, '\$') FROM ${testTable} ORDER BY id"
+ qt_jsonb_type_select "SELECT id, j, jsonb_type(j, '\$') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_type(j, '\$.k1') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_type(j, '\$.k2') FROM ${testTable} ORDER BY id"
@@ -359,10 +419,18 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, jsonb_type(j, '\$.a1[3]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_type(j, '\$.a1[4]') FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, jsonb_type(j, '\$.a1[10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last-2]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[last-10]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[-0]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[-1]') FROM ${testTable} ORDER BY id"
+ qt_select "SELECT id, j, jsonb_type(j, '\$.a1[-10]') FROM ${testTable} ORDER BY id"
// CAST from JSONB
- qt_select "SELECT id, j, CAST(j AS BOOLEAN) FROM ${testTable} ORDER BY id"
+ qt_cast_from_select "SELECT id, j, CAST(j AS BOOLEAN) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(j AS SMALLINT) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(j AS INT) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(j AS BIGINT) FROM ${testTable} ORDER BY id"
@@ -370,7 +438,7 @@ suite("test_jsonb_unique_load_and_function", "p0") {
qt_select "SELECT id, j, CAST(j AS STRING) FROM ${testTable} ORDER BY id"
// CAST to JSONB
- qt_select "SELECT id, j, CAST(CAST(j AS BOOLEAN) AS JSONB) FROM ${testTable} ORDER BY id"
+ qt_cast_to_select "SELECT id, j, CAST(CAST(j AS BOOLEAN) AS JSONB) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(CAST(j AS SMALLINT) AS JSONB) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(CAST(j AS INT) AS JSONB) FROM ${testTable} ORDER BY id"
qt_select "SELECT id, j, CAST(CAST(j AS BIGINT) AS JSONB) FROM ${testTable} ORDER BY id"
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org