This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 4acc692e2e0 [feature](ES Catalog)Support control scroll level by
config #37180 (#37271)
4acc692e2e0 is described below
commit 4acc692e2e015093a143449414a9e04116537df1
Author: qiye <[email protected]>
AuthorDate: Mon Jul 15 16:42:00 2024 +0800
[feature](ES Catalog)Support control scroll level by config #37180 (#37271)
backport #37180
---
be/src/exec/es/es_scan_reader.cpp | 86 +++-
be/src/exec/es/es_scroll_query.cpp | 18 +-
be/src/http/http_client.cpp | 14 +-
be/src/http/http_client.h | 2 +-
.../elasticsearch/scripts/es_init.sh | 29 ++
.../java/org/apache/doris/planner/EsScanNode.java | 32 +-
.../java/org/apache/doris/qe/SessionVariable.java | 20 +
.../data/external_table_p0/es/test_es_query.out | 491 +++++++++++++++++++++
.../external_table_p0/es/test_es_query.groovy | 270 ++++++-----
9 files changed, 801 insertions(+), 161 deletions(-)
diff --git a/be/src/exec/es/es_scan_reader.cpp
b/be/src/exec/es/es_scan_reader.cpp
index 183719fc7c5..7aeed98cd36 100644
--- a/be/src/exec/es/es_scan_reader.cpp
+++ b/be/src/exec/es/es_scan_reader.cpp
@@ -74,19 +74,32 @@ ESScanReader::ESScanReader(const std::string& target,
std::string filter_path =
_doc_value_mode ? DOCVALUE_SCROLL_SEARCH_FILTER_PATH :
SOURCE_SCROLL_SEARCH_FILTER_PATH;
+ // When shard_id is negative(-1), the request will be sent to ES without
shard preference.
+ int32 shard_id = std::stoi(_shards);
if (props.find(KEY_TERMINATE_AFTER) != props.end()) {
_exactly_once = true;
std::stringstream scratch;
// just send a normal search against the elasticsearch with
additional terminate_after param to achieve terminate early effect when limit
take effect
if (_type.empty()) {
- // `terminate_after` and `size` can not be used together in scroll
request of ES 8.x
- scratch << _target << REQUEST_SEPARATOR << _index << "/_search?"
- << REQUEST_PREFERENCE_PREFIX << _shards << "&" <<
filter_path;
+ if (shard_id < 0) {
+ scratch << _target << REQUEST_SEPARATOR << _index <<
"/_search?" << filter_path;
+ } else {
+ // `terminate_after` and `size` can not be used together in
scroll request of ES 8.x
+ scratch << _target << REQUEST_SEPARATOR << _index <<
"/_search?"
+ << REQUEST_PREFERENCE_PREFIX << _shards << "&" <<
filter_path;
+ }
} else {
- scratch << _target << REQUEST_SEPARATOR << _index <<
REQUEST_SEPARATOR << _type
- << "/_search?"
- << "terminate_after=" << props.at(KEY_TERMINATE_AFTER)
- << REQUEST_PREFERENCE_PREFIX << _shards << "&" <<
filter_path;
+ if (shard_id < 0) {
+ scratch << _target << REQUEST_SEPARATOR << _index <<
REQUEST_SEPARATOR << _type
+ << "/_search?"
+ << "terminate_after=" << props.at(KEY_TERMINATE_AFTER)
<< "&"
+ << filter_path;
+ } else {
+ scratch << _target << REQUEST_SEPARATOR << _index <<
REQUEST_SEPARATOR << _type
+ << "/_search?"
+ << "terminate_after=" << props.at(KEY_TERMINATE_AFTER)
+ << REQUEST_PREFERENCE_PREFIX << _shards << "&" <<
filter_path;
+ }
}
_search_url = scratch.str();
} else {
@@ -95,15 +108,27 @@ ESScanReader::ESScanReader(const std::string& target,
// scroll request for scanning
// add terminate_after for the first scroll to avoid decompress all
postings list
if (_type.empty()) {
- // `terminate_after` and `size` can not be used together in scroll
request of ES 8.x
- scratch << _target << REQUEST_SEPARATOR << _index << "/_search?"
- << "scroll=" << _scroll_keep_alive <<
REQUEST_PREFERENCE_PREFIX << _shards
- << "&" << filter_path;
+ if (shard_id < 0) {
+ scratch << _target << REQUEST_SEPARATOR << _index <<
"/_search?"
+ << "scroll=" << _scroll_keep_alive << "&" <<
filter_path;
+ } else {
+ // `terminate_after` and `size` can not be used together in
scroll request of ES 8.x
+ scratch << _target << REQUEST_SEPARATOR << _index <<
"/_search?"
+ << "scroll=" << _scroll_keep_alive <<
REQUEST_PREFERENCE_PREFIX << _shards
+ << "&" << filter_path;
+ }
} else {
- scratch << _target << REQUEST_SEPARATOR << _index <<
REQUEST_SEPARATOR << _type
- << "/_search?"
- << "scroll=" << _scroll_keep_alive <<
REQUEST_PREFERENCE_PREFIX << _shards
- << "&" << filter_path << "&terminate_after=" <<
batch_size_str;
+ if (shard_id < 0) {
+ scratch << _target << REQUEST_SEPARATOR << _index <<
REQUEST_SEPARATOR << _type
+ << "/_search?"
+ << "scroll=" << _scroll_keep_alive << "&" <<
filter_path
+ << "&terminate_after=" << batch_size_str;
+ } else {
+ scratch << _target << REQUEST_SEPARATOR << _index <<
REQUEST_SEPARATOR << _type
+ << "/_search?"
+ << "scroll=" << _scroll_keep_alive <<
REQUEST_PREFERENCE_PREFIX << _shards
+ << "&" << filter_path << "&terminate_after=" <<
batch_size_str;
+ }
}
_init_scroll_url = scratch.str();
_next_scroll_url = _target + REQUEST_SEARCH_SCROLL_PATH + "?" +
filter_path;
@@ -115,11 +140,13 @@ ESScanReader::~ESScanReader() {}
Status ESScanReader::open() {
_is_first = true;
+ // we do not enable set_fail_on_error for ES http request to get more
detail error messages
+ bool set_fail_on_error = false;
if (_exactly_once) {
- RETURN_IF_ERROR(_network_client.init(_search_url));
+ RETURN_IF_ERROR(_network_client.init(_search_url, set_fail_on_error));
LOG(INFO) << "search request URL: " << _search_url;
} else {
- RETURN_IF_ERROR(_network_client.init(_init_scroll_url));
+ RETURN_IF_ERROR(_network_client.init(_init_scroll_url,
set_fail_on_error));
LOG(INFO) << "First scroll request URL: " << _init_scroll_url;
}
_network_client.set_basic_auth(_user_name, _passwd);
@@ -132,7 +159,8 @@ Status ESScanReader::open() {
Status status = _network_client.execute_post_request(_query,
&_cached_response);
if (!status.ok() || _network_client.get_http_status() != 200) {
std::stringstream ss;
- ss << "Failed to connect to ES server, errmsg is: " << status;
+ ss << "Failed to connect to ES server, errmsg is: " << status
+ << ", response: " << _cached_response;
LOG(WARNING) << ss.str();
return Status::InternalError(ss.str());
}
@@ -155,7 +183,9 @@ Status ESScanReader::get_next(bool* scan_eos,
std::unique_ptr<ScrollParser>& scr
if (_exactly_once) {
return Status::OK();
}
- RETURN_IF_ERROR(_network_client.init(_next_scroll_url));
+ // we do not enable set_fail_on_error for ES http request to get more
detail error messages
+ bool set_fail_on_error = false;
+ RETURN_IF_ERROR(_network_client.init(_next_scroll_url,
set_fail_on_error));
_network_client.set_basic_auth(_user_name, _passwd);
_network_client.set_content_type("application/json");
_network_client.set_timeout_ms(_http_timeout_ms);
@@ -168,13 +198,15 @@ Status ESScanReader::get_next(bool* scan_eos,
std::unique_ptr<ScrollParser>& scr
long status = _network_client.get_http_status();
if (status == 404) {
LOG(WARNING) << "request scroll search failure 404["
- << ", response: " << (response.empty() ? "empty
response" : response);
+ << ", response: " << (response.empty() ? "empty
response" : response)
+ << "]";
return Status::InternalError("No search context found for {}",
_scroll_id);
}
if (status != 200) {
LOG(WARNING) << "request scroll search failure["
- << "http status" << status
- << ", response: " << (response.empty() ? "empty
response" : response);
+ << "http status: " << status
+ << ", response: " << (response.empty() ? "empty
response" : response)
+ << "]";
return Status::InternalError("request scroll search failure: {}",
(response.empty() ? "empty response"
: response));
}
@@ -211,7 +243,9 @@ Status ESScanReader::close() {
}
std::string scratch_target = _target + REQUEST_SEARCH_SCROLL_PATH;
- RETURN_IF_ERROR(_network_client.init(scratch_target));
+ // we do not enable set_fail_on_error for ES http request to get more
detail error messages
+ bool set_fail_on_error = false;
+ RETURN_IF_ERROR(_network_client.init(scratch_target, set_fail_on_error));
_network_client.set_basic_auth(_user_name, _passwd);
_network_client.set_method(DELETE);
_network_client.set_content_type("application/json");
@@ -222,9 +256,13 @@ Status ESScanReader::close() {
std::string response;
RETURN_IF_ERROR(_network_client.execute_delete_request(
ESScrollQueryBuilder::build_clear_scroll_body(_scroll_id),
&response));
- if (_network_client.get_http_status() == 200) {
+ long status = _network_client.get_http_status();
+ if (status == 200) {
return Status::OK();
} else {
+ LOG(WARNING) << "es_scan_reader delete scroll context failure["
+ << "http status: " << status
+ << ", response: " << (response.empty() ? "empty response"
: response) << "]";
return Status::InternalError("es_scan_reader delete scroll context
failure");
}
}
diff --git a/be/src/exec/es/es_scroll_query.cpp
b/be/src/exec/es/es_scroll_query.cpp
index e8d214fd9bf..fc89341239f 100644
--- a/be/src/exec/es/es_scroll_query.cpp
+++ b/be/src/exec/es/es_scroll_query.cpp
@@ -125,11 +125,19 @@ std::string ESScrollQueryBuilder::build(const
std::map<std::string, std::string>
} else {
size = atoi(properties.at(ESScanReader::KEY_BATCH_SIZE).c_str());
}
- rapidjson::Value sort_node(rapidjson::kArrayType);
- // use the scroll-scan mode for scan index documents
- rapidjson::Value field("_doc", allocator);
- sort_node.PushBack(field, allocator);
- es_query_dsl.AddMember("sort", sort_node, allocator);
+
+ std::string shard_id;
+ if (properties.find(ESScanReader::KEY_SHARD) != properties.end()) {
+ shard_id = properties.at(ESScanReader::KEY_SHARD);
+ }
+ // To maintain consistency with the query, when shard_id is negative, do
not add sort node in scroll request body.
+ if (!shard_id.empty() && std::stoi(shard_id) >= 0) {
+ rapidjson::Value sort_node(rapidjson::kArrayType);
+ // use the scroll-scan mode for scan index documents
+ rapidjson::Value field("_doc", allocator);
+ sort_node.PushBack(field, allocator);
+ es_query_dsl.AddMember("sort", sort_node, allocator);
+ }
// number of documents returned
es_query_dsl.AddMember("size", size, allocator);
rapidjson::StringBuffer buffer;
diff --git a/be/src/http/http_client.cpp b/be/src/http/http_client.cpp
index d7a6c9c9665..3fe52bf4912 100644
--- a/be/src/http/http_client.cpp
+++ b/be/src/http/http_client.cpp
@@ -42,7 +42,7 @@ HttpClient::~HttpClient() {
}
}
-Status HttpClient::init(const std::string& url) {
+Status HttpClient::init(const std::string& url, bool set_fail_on_error) {
if (_curl == nullptr) {
_curl = curl_easy_init();
if (_curl == nullptr) {
@@ -70,10 +70,14 @@ Status HttpClient::init(const std::string& url) {
return Status::InternalError("fail to set CURLOPT_NOSIGNAL");
}
// set fail on error
- code = curl_easy_setopt(_curl, CURLOPT_FAILONERROR, 1L);
- if (code != CURLE_OK) {
- LOG(WARNING) << "fail to set CURLOPT_FAILONERROR, msg=" <<
_to_errmsg(code);
- return Status::InternalError("fail to set CURLOPT_FAILONERROR");
+ // When this option is set to `1L` (enabled), libcurl will return an error
directly
+ // when encountering HTTP error codes (>= 400), without reading the body
of the error response.
+ if (set_fail_on_error) {
+ code = curl_easy_setopt(_curl, CURLOPT_FAILONERROR, 1L);
+ if (code != CURLE_OK) {
+ LOG(WARNING) << "fail to set CURLOPT_FAILONERROR, msg=" <<
_to_errmsg(code);
+ return Status::InternalError("fail to set CURLOPT_FAILONERROR");
+ }
}
// set redirect
code = curl_easy_setopt(_curl, CURLOPT_FOLLOWLOCATION, 1L);
diff --git a/be/src/http/http_client.h b/be/src/http/http_client.h
index c80d0c6f56a..d1b2e1b47af 100644
--- a/be/src/http/http_client.h
+++ b/be/src/http/http_client.h
@@ -45,7 +45,7 @@ public:
// this function must call before other function,
// you can call this multiple times to reuse this object
- Status init(const std::string& url);
+ Status init(const std::string& url, bool set_fail_on_error = true);
void set_method(HttpMethod method);
diff --git
a/docker/thirdparties/docker-compose/elasticsearch/scripts/es_init.sh
b/docker/thirdparties/docker-compose/elasticsearch/scripts/es_init.sh
index 5c865e660ad..21f1dc55a33 100755
--- a/docker/thirdparties/docker-compose/elasticsearch/scripts/es_init.sh
+++ b/docker/thirdparties/docker-compose/elasticsearch/scripts/es_init.sh
@@ -22,6 +22,8 @@
curl "http://${ES_5_HOST}:9200/test1" -H "Content-Type:application/json" -X
PUT -d "@/mnt/scripts/index/es6_test1.json"
# create index test2_20220808
curl "http://${ES_5_HOST}:9200/test2_20220808" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es6_test2.json'
+# create index test2_20220809
+curl "http://${ES_5_HOST}:9200/test2_20220809" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es6_test2.json'
# put data for test1
curl "http://${ES_5_HOST}:9200/test1/doc/1" -H "Content-Type:application/json"
-X POST -d '@/mnt/scripts/data/data1_es6.json'
curl "http://${ES_5_HOST}:9200/test1/doc/2" -H "Content-Type:application/json"
-X POST -d '@/mnt/scripts/data/data2_es6.json'
@@ -31,9 +33,14 @@ curl "http://${ES_5_HOST}:9200/test1/doc/3" -H
"Content-Type:application/json" -
curl "http://${ES_5_HOST}:9200/test2_20220808/doc/1" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data1_es6.json'
curl "http://${ES_5_HOST}:9200/test2_20220808/doc/2" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data2_es6.json'
curl "http://${ES_5_HOST}:9200/test2_20220808/doc/3" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data3_es5.json'
+# put data for test2_20220809
+curl "http://${ES_5_HOST}:9200/test2_20220809/doc/1" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data1_es6.json'
+curl "http://${ES_5_HOST}:9200/test2_20220809/doc/2" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data2_es6.json'
+curl "http://${ES_5_HOST}:9200/test2_20220809/doc/3" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data3_es5.json'
# put _meta for array
curl "http://${ES_5_HOST}:9200/test1/doc/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
curl "http://${ES_5_HOST}:9200/test2_20220808/doc/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
+curl "http://${ES_5_HOST}:9200/test2_20220809/doc/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
# create index .hide
curl "http://${ES_5_HOST}:9200/.hide" -H "Content-Type:application/json" -X
PUT -d "@/mnt/scripts/index/es6_hide.json"
@@ -43,6 +50,8 @@ curl "http://${ES_5_HOST}:9200/.hide" -H
"Content-Type:application/json" -X PUT
curl "http://${ES_6_HOST}:9200/test1" -H "Content-Type:application/json" -X
PUT -d "@/mnt/scripts/index/es6_test1.json"
# create index test2_20220808
curl "http://${ES_6_HOST}:9200/test2_20220808" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es6_test2.json'
+# create index test2_20220809
+curl "http://${ES_6_HOST}:9200/test2_20220809" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es6_test2.json'
# put data for test1
curl "http://${ES_6_HOST}:9200/test1/doc/1" -H "Content-Type:application/json"
-X POST -d '@/mnt/scripts/data/data1_es6.json'
curl "http://${ES_6_HOST}:9200/test1/doc/2" -H "Content-Type:application/json"
-X POST -d '@/mnt/scripts/data/data2_es6.json'
@@ -51,9 +60,14 @@ curl "http://${ES_6_HOST}:9200/test1/doc/3" -H
"Content-Type:application/json" -
curl "http://${ES_6_HOST}:9200/test2_20220808/doc/1" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data1_es6.json'
curl "http://${ES_6_HOST}:9200/test2_20220808/doc/2" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data2_es6.json'
curl "http://${ES_6_HOST}:9200/test2_20220808/doc/3" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data3_es6.json'
+# put data for test2_20220809
+curl "http://${ES_6_HOST}:9200/test2_20220809/doc/1" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data1_es6.json'
+curl "http://${ES_6_HOST}:9200/test2_20220809/doc/2" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data2_es6.json'
+curl "http://${ES_6_HOST}:9200/test2_20220809/doc/3" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data3_es6.json'
# put _meta for array
curl "http://${ES_6_HOST}:9200/test1/doc/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
curl "http://${ES_6_HOST}:9200/test2_20220808/doc/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
+curl "http://${ES_6_HOST}:9200/test2_20220809/doc/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
# create index .hide
curl "http://${ES_6_HOST}:9200/.hide" -H "Content-Type:application/json" -X
PUT -d "@/mnt/scripts/index/es6_hide.json"
@@ -62,6 +76,8 @@ curl "http://${ES_6_HOST}:9200/.hide" -H
"Content-Type:application/json" -X PUT
curl "http://${ES_7_HOST}:9200/test1" -H "Content-Type:application/json" -X
PUT -d "@/mnt/scripts/index/es7_test1.json"
# create index test2_20220808
curl "http://${ES_7_HOST}:9200/test2_20220808" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es7_test2.json'
+# create index test2_20220808
+curl "http://${ES_7_HOST}:9200/test2_20220809" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es7_test2.json'
# create index test3_20231005
curl "http://${ES_7_HOST}:9200/test3_20231005" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es7_test3.json'
# put data for tese1
@@ -74,12 +90,18 @@ curl "http://${ES_7_HOST}:9200/test2_20220808/_doc/1" -H
"Content-Type:applicati
curl "http://${ES_7_HOST}:9200/test2_20220808/_doc/2" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data2.json'
curl "http://${ES_7_HOST}:9200/test2_20220808/_doc/3" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data3.json'
curl "http://${ES_7_HOST}:9200/test2_20220808/_doc/4" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data4.json'
+# put data for test2_20220809
+curl "http://${ES_7_HOST}:9200/test2_20220809/_doc/1" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data1.json'
+curl "http://${ES_7_HOST}:9200/test2_20220809/_doc/2" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data2.json'
+curl "http://${ES_7_HOST}:9200/test2_20220809/_doc/3" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data3.json'
+curl "http://${ES_7_HOST}:9200/test2_20220809/_doc/4" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data4.json'
# put data for test3_20231005
curl "http://${ES_7_HOST}:9200/test3_20231005/_doc/1" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data5.json'
# put _meta for array
curl "http://${ES_7_HOST}:9200/test1/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
curl "http://${ES_7_HOST}:9200/test2_20220808/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
+curl "http://${ES_7_HOST}:9200/test2_20220809/_mapping" -H
"Content-Type:application/json" -X PUT -d "@/mnt/scripts/index/array_meta.json"
# create index .hide
curl "http://${ES_7_HOST}:9200/.hide" -H "Content-Type:application/json" -X
PUT -d "@/mnt/scripts/index/es7_hide.json"
@@ -89,6 +111,8 @@ curl "http://${ES_7_HOST}:9200/.hide" -H
"Content-Type:application/json" -X PUT
curl "http://${ES_8_HOST}:9200/test1" -H "Content-Type:application/json" -X
PUT -d "@/mnt/scripts/index/es7_test1.json"
# create index test2_20220808
curl "http://${ES_8_HOST}:9200/test2_20220808" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es7_test2.json'
+# create index test2_20220809
+curl "http://${ES_8_HOST}:9200/test2_20220809" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es7_test2.json'
# create index test3_20231005
curl "http://${ES_8_HOST}:9200/test3_20231005" -H
"Content-Type:application/json" -X PUT -d '@/mnt/scripts/index/es7_test3.json'
@@ -102,6 +126,11 @@ curl "http://${ES_8_HOST}:9200/test2_20220808/_doc/1" -H
"Content-Type:applicati
curl "http://${ES_8_HOST}:9200/test2_20220808/_doc/2" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data2.json'
curl "http://${ES_8_HOST}:9200/test2_20220808/_doc/3" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data3.json'
curl "http://${ES_8_HOST}:9200/test2_20220808/_doc/4" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data4.json'
+# put data for test2_20220809
+curl "http://${ES_8_HOST}:9200/test2_20220809/_doc/1" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data1.json'
+curl "http://${ES_8_HOST}:9200/test2_20220809/_doc/2" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data2.json'
+curl "http://${ES_8_HOST}:9200/test2_20220809/_doc/3" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data3.json'
+curl "http://${ES_8_HOST}:9200/test2_20220809/_doc/4" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data4.json'
# put data for test3_20231005
curl "http://${ES_8_HOST}:9200/test3_20231005/_doc/1" -H
"Content-Type:application/json" -X POST -d '@/mnt/scripts/data/data5.json'
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/EsScanNode.java
b/fe/fe-core/src/main/java/org/apache/doris/planner/EsScanNode.java
index 16e6ed040b4..b5f39193895 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/EsScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/EsScanNode.java
@@ -39,6 +39,7 @@ import
org.apache.doris.external.elasticsearch.QueryBuilders.BuilderOptions;
import org.apache.doris.external.elasticsearch.QueryBuilders.QueryBuilder;
import org.apache.doris.planner.external.ExternalScanNode;
import org.apache.doris.planner.external.FederationBackendPolicy;
+import org.apache.doris.qe.ConnectContext;
import org.apache.doris.statistics.StatisticalType;
import org.apache.doris.statistics.query.StatsDelta;
import org.apache.doris.system.Backend;
@@ -60,6 +61,7 @@ import org.apache.logging.log4j.Logger;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -213,8 +215,15 @@ public class EsScanNode extends ExternalScanNode {
String.join(",", unPartitionedIndices), String.join(",",
partitionedIndices));
}
List<TScanRangeLocations> result = Lists.newArrayList();
+ boolean enableShardScroll = isEnableESShardScroll();
for (EsShardPartitions indexState : selectedIndex) {
- for (List<EsShardRouting> shardRouting :
indexState.getShardRoutings().values()) {
+ // When disabling shard scroll, only use the first shard routing.
+ // Because we only need plan a single scan range.
+ List<List<EsShardRouting>> shardRoutings = enableShardScroll
+ ? new ArrayList<>(indexState.getShardRoutings().values()) :
+
Collections.singletonList(indexState.getShardRoutings().get(0));
+
+ for (List<EsShardRouting> shardRouting : shardRoutings) {
// get backends
List<TNetworkAddress> shardAllocations = new ArrayList<>();
List<String> preLocations = new ArrayList<>();
@@ -226,7 +235,10 @@ public class EsScanNode extends ExternalScanNode {
FederationBackendPolicy backendPolicy = new
FederationBackendPolicy();
backendPolicy.init(preLocations);
TScanRangeLocations locations = new TScanRangeLocations();
- for (int i = 0; i < backendPolicy.numBackends(); ++i) {
+ // When disabling shard scroll, only use the first backend.
+ // Because we only need plan a single query to one backend.
+ int numBackends = enableShardScroll ?
backendPolicy.numBackends() : 1;
+ for (int i = 0; i < numBackends; ++i) {
TScanRangeLocation location = new TScanRangeLocation();
Backend be = backendPolicy.getNextBe();
location.setBackendId(be.getId());
@@ -237,11 +249,18 @@ public class EsScanNode extends ExternalScanNode {
// Generate on es scan range
TEsScanRange esScanRange = new TEsScanRange();
esScanRange.setEsHosts(shardAllocations);
- esScanRange.setIndex(shardRouting.get(0).getIndexName());
+ // When disabling shard scroll, use the index state's index
name to prevent the index aliases from
+ // being expanded.
+ // eg: index alias `log-20240501` may point to multiple
indices,
+ // such as `log-20240501-1`/`log-20240501-2`.
+ // When we plan a single query, we should use the index alias
instead of the real indices names.
+ esScanRange.setIndex(
+ enableShardScroll ? shardRouting.get(0).getIndexName()
: indexState.getIndexName());
if (table.getType() != null) {
esScanRange.setType(table.getMappingType());
}
- esScanRange.setShardId(shardRouting.get(0).getShardId());
+ // When disabling shard scroll, set shard id to -1 to disable
shard preference in query option.
+ esScanRange.setShardId(enableShardScroll ?
shardRouting.get(0).getShardId() : -1);
// Scan range
TScanRange scanRange = new TScanRange();
scanRange.setEsScanRange(esScanRange);
@@ -262,6 +281,11 @@ public class EsScanNode extends ExternalScanNode {
return result;
}
+ private boolean isEnableESShardScroll() {
+ ConnectContext connectContext = ConnectContext.get();
+ return connectContext != null &&
connectContext.getSessionVariable().isEnableESShardScroll();
+ }
+
/**
* if the index name is an alias or index pattern, then the es table is
related
* with one or more indices some indices could be pruned by using
partition info
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index 0de84bfa16f..82be18cb73d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -461,6 +461,8 @@ public class SessionVariable implements Serializable,
Writable {
public static final String MAX_MSG_SIZE_OF_RESULT_RECEIVER =
"max_msg_size_of_result_receiver";
+ public static final String ENABLE_ES_SHARD_SCROLL =
"enable_es_shard_scroll";
+
public static final List<String> DEBUG_VARIABLES = ImmutableList.of(
SKIP_DELETE_PREDICATE,
SKIP_DELETE_BITMAP,
@@ -1459,6 +1461,24 @@ public class SessionVariable implements Serializable,
Writable {
"用于控制结果反序列化时 thrift 字段的最大值,当遇到类似\"MaxMessageSize
reached\"这样的错误时可以考虑修改该参数"})
public int maxMsgSizeOfResultReceiver =
TConfiguration.DEFAULT_MAX_MESSAGE_SIZE;
+ /**
+ * When enabling shard scroll, FE will plan scan ranges by shards of ES
indices.
+ * Otherwise, FE will plan a single query to ES.
+ */
+ @VariableMgr.VarAttr(name = ENABLE_ES_SHARD_SCROLL, description = {
+ "ES catalog 是否开启 shard 级别的 scroll 请求,默认开启。",
+ "Whether to enable shard-level scroll requests for ES catalog, enabled
by default."
+ })
+ public boolean enableESShardScroll = true;
+
+ public void setEnableEsShardScroll(boolean enableESShardScroll) {
+ this.enableESShardScroll = enableESShardScroll;
+ }
+
+ public boolean isEnableESShardScroll() {
+ return enableESShardScroll;
+ }
+
// If this fe is in fuzzy mode, then will use initFuzzyModeVariables to
generate some variables,
// not the default value set in the code.
public void initFuzzyModeVariables() {
diff --git a/regression-test/data/external_table_p0/es/test_es_query.out
b/regression-test/data/external_table_p0/es/test_es_query.out
index b84387fb542..acb8a64cef4 100644
--- a/regression-test/data/external_table_p0/es/test_es_query.out
+++ b/regression-test/data/external_table_p0/es/test_es_query.out
@@ -60,6 +60,67 @@ I'm not null or empty
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+-- !sql01 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770] \N
[{"last":"Smith","first [...]
+
+-- !sql02 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770] \N
[{"last":"Smith","first [...]
+
+-- !sql03 --
+2022-08-08 2022-08-08T12:10:10 2022-08-08T12:10:10
2022-08-08T04:10:10 2022-08-08T20:10:10
+2022-08-08 2022-08-09T12:10:10 2022-08-09T12:10:10
2022-08-09T12:10:10 2022-08-09T12:10:10
+2022-08-08 2022-08-10T12:10:10 2022-08-10T12:10:10
2022-08-10T04:10:10 2022-08-10T20:10:10
+2022-08-08 2022-08-11T12:10:10 2022-08-11T12:10:10
2022-08-11T12:10:10 2022-08-11T11:10:10
+
+-- !sql04 --
+I'm not null or empty
+
+-- !sql05 --
+
+I'm not null or empty
+
+-- !sql06 --
+\N
+\N
+
+I'm not null or empty
+
+-- !sql07 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770] \N
[{"last":"Smith","first [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string2
[1, 2, 3, 4] 2022-08-08 2022-08-09T12:10:10 text2 ["2020-01-01",
"2020-01-02"] 4.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-09T12:10:10 2022-08-09T12:10:10 2022-08-09T12:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":"J [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string3
[1, 2, 3, 4] 2022-08-08 2022-08-10T12:10:10 text3_4*5
["2020-01-01", "2020-01-02"] 5.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3]
[1, 2, 3, 4] ["a", "b", "c"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-10T12:10:10
2022-08-10T12:10:10 2022-08-10T20:10:10 [1, -2, -3, 4] [1, 0, 1, 1]
[32768, 32769, -32769, -32770] I'm not null or empty [{ [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string4
[1, 2, 3, 4] 2022-08-08 2022-08-11T12:10:10 text3_4*5
["2020-01-01", "2020-01-02"] 6.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3]
[1, 2, 3, 4] ["a", "b", "c"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-11T12:10:10
2022-08-11T12:10:10 2022-08-11T11:10:10 [1, -2, -3, 4] [1, 0, 1, 1]
[32768, 32769, -32769, -32770] \N [{"last":"Smith","fir [...]
+
+-- !sql08 --
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+
+-- !sql20 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":" [...]
+
+-- !sql21 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":" [...]
+
+-- !sql22 --
+2022-08-08 2022-08-08T12:10:10 2022-08-08T12:10:10
2022-08-08T04:10:10 2022-08-08T20:10:10
+2022-08-08 2022-08-09T12:10:10 2022-08-09T12:10:10
2022-08-09T12:10:10 2022-08-09T12:10:10
+2022-08-08 2022-08-10T12:10:10 2022-08-10T12:10:10
2022-08-10T04:10:10 2022-08-10T20:10:10
+2022-08-08 2022-08-11T12:10:10 2022-08-11T12:10:10
2022-08-11T12:10:10 2022-08-11T11:10:10
+
+-- !sql23 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":" [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string2
[1, 2, 3, 4] 2022-08-08 2022-08-09T12:10:10 text2 ["2020-01-01",
"2020-01-02"] 4.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-09T12:10:10 2022-08-09T12:10:10 2022-08-09T12:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":"Jo [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string3
[1, 2, 3, 4] 2022-08-08 2022-08-10T12:10:10 text3_4*5
["2020-01-01", "2020-01-02"] 5.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3]
[1, 2, 3, 4] ["a", "b", "c"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-10T12:10:10
2022-08-10T12:10:10 2022-08-10T20:10:10 [1, -2, -3, 4] [1, 0, 1, 1]
[32768, 32769, -32769, -32770] [{"last":"Smith","first" [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string4
[1, 2, 3, 4] 2022-08-08 2022-08-11T12:10:10 text3_4*5
["2020-01-01", "2020-01-02"] 6.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3]
[1, 2, 3, 4] ["a", "b", "c"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-11T12:10:10
2022-08-11T12:10:10 2022-08-11T11:10:10 [1, -2, -3, 4] [1, 0, 1, 1]
[32768, 32769, -32769, -32770] [{"last":"Smith","first" [...]
+
+-- !sql24 --
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+
-- !sql_5_02 --
[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
@@ -227,6 +288,10 @@ true 1 128 32768 -1 0 1.0
1.0 1.0 1.0 2020-01-01 2020-01-01T12:00 a d
192.168.0.
true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
-- !sql_7_07 --
[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
@@ -242,6 +307,10 @@ true 1 128 32768 -1 0 1.0
1.0 1.0 1.0 2020-01-01 2020-01-01T12:00 a d
192.168.0.
[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
-- !sql_7_10 --
value1 value2
@@ -324,6 +393,10 @@ true 1 128 32768 -1 0 1.0
1.0 1.0 1.0 2020-01-01 2020-01-01T12:00 a d
192.168.0.
true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
-- !sql_8_05 --
[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
@@ -339,6 +412,10 @@ true 1 128 32768 -1 0 1.0
1.0 1.0 1.0 2020-01-01 2020-01-01T12:00 a d
192.168.0.
[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
-- !sql_8_08 --
value1 value2
@@ -398,3 +475,417 @@ I'm not null or empty
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+-- !sql01 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770] \N
[{"last":"Smith","first [...]
+
+-- !sql02 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770] \N
[{"last":"Smith","first [...]
+
+-- !sql03 --
+2022-08-08 2022-08-08T12:10:10 2022-08-08T12:10:10
2022-08-08T04:10:10 2022-08-08T20:10:10
+2022-08-08 2022-08-09T12:10:10 2022-08-09T12:10:10
2022-08-09T12:10:10 2022-08-09T12:10:10
+2022-08-08 2022-08-10T12:10:10 2022-08-10T12:10:10
2022-08-10T04:10:10 2022-08-10T20:10:10
+2022-08-08 2022-08-11T12:10:10 2022-08-11T12:10:10
2022-08-11T12:10:10 2022-08-11T11:10:10
+
+-- !sql04 --
+I'm not null or empty
+
+-- !sql05 --
+
+I'm not null or empty
+
+-- !sql06 --
+\N
+\N
+
+I'm not null or empty
+
+-- !sql07 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770] \N
[{"last":"Smith","first [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string2
[1, 2, 3, 4] 2022-08-08 2022-08-09T12:10:10 text2 ["2020-01-01",
"2020-01-02"] 4.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-09T12:10:10 2022-08-09T12:10:10 2022-08-09T12:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":"J [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string3
[1, 2, 3, 4] 2022-08-08 2022-08-10T12:10:10 text3_4*5
["2020-01-01", "2020-01-02"] 5.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3]
[1, 2, 3, 4] ["a", "b", "c"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-10T12:10:10
2022-08-10T12:10:10 2022-08-10T20:10:10 [1, -2, -3, 4] [1, 0, 1, 1]
[32768, 32769, -32769, -32770] I'm not null or empty [{ [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string4
[1, 2, 3, 4] 2022-08-08 2022-08-11T12:10:10 text3_4*5
["2020-01-01", "2020-01-02"] 6.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3]
[1, 2, 3, 4] ["a", "b", "c"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-11T12:10:10
2022-08-11T12:10:10 2022-08-11T11:10:10 [1, -2, -3, 4] [1, 0, 1, 1]
[32768, 32769, -32769, -32770] \N [{"last":"Smith","fir [...]
+
+-- !sql08 --
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+
+-- !sql20 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":" [...]
+
+-- !sql21 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":" [...]
+
+-- !sql22 --
+2022-08-08 2022-08-08T12:10:10 2022-08-08T12:10:10
2022-08-08T04:10:10 2022-08-08T20:10:10
+2022-08-08 2022-08-09T12:10:10 2022-08-09T12:10:10
2022-08-09T12:10:10 2022-08-09T12:10:10
+2022-08-08 2022-08-10T12:10:10 2022-08-10T12:10:10
2022-08-10T04:10:10 2022-08-10T20:10:10
+2022-08-08 2022-08-11T12:10:10 2022-08-11T12:10:10
2022-08-11T12:10:10 2022-08-11T11:10:10
+
+-- !sql23 --
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string1
[1, 2, 3, 4] 2022-08-08 2022-08-08T12:10:10 text#1 ["2020-01-01",
"2020-01-02"] 3.14 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-08T12:10:10 2022-08-08T12:10:10 2022-08-08T20:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":" [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string2
[1, 2, 3, 4] 2022-08-08 2022-08-09T12:10:10 text2 ["2020-01-01",
"2020-01-02"] 4.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
["a", "b", "c"] [{"name":"Andy","age":18},{"name":"Tim","age":28}]
2022-08-09T12:10:10 2022-08-09T12:10:10 2022-08-09T12:10:10 [1, -2,
-3, 4] [1, 0, 1, 1] [32768, 32769, -32769, -32770]
[{"last":"Smith","first":"Jo [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string3
[1, 2, 3, 4] 2022-08-08 2022-08-10T12:10:10 text3_4*5
["2020-01-01", "2020-01-02"] 5.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3]
[1, 2, 3, 4] ["a", "b", "c"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-10T12:10:10
2022-08-10T12:10:10 2022-08-10T20:10:10 [1, -2, -3, 4] [1, 0, 1, 1]
[32768, 32769, -32769, -32770] [{"last":"Smith","first" [...]
+["2020-01-01 12:00:00", "2020-01-02 13:01:01"] [-1, 0, 1, 2] [0, 1, 2, 3]
["d", "e", "f"] [128, 129, -129, -130] ["192.168.0.1", "127.0.0.1"] string4
[1, 2, 3, 4] 2022-08-08 2022-08-11T12:10:10 text3_4*5
["2020-01-01", "2020-01-02"] 6.0 [1, 2, 3, 4] [1, 1.1, 1.2, 1.3]
[1, 2, 3, 4] ["a", "b", "c"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] 2022-08-11T12:10:10
2022-08-11T12:10:10 2022-08-11T11:10:10 [1, -2, -3, 4] [1, 0, 1, 1]
[32768, 32769, -32769, -32770] [{"last":"Smith","first" [...]
+
+-- !sql24 --
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+
+-- !sql_5_02 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+
+-- !sql_5_03 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}]
string2 text2 4.0 2022-08-08T00:00 2222 2022-08-08T12:10:10
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] I'm not
null or empty string3 text3_4*5 5.0 2022-08-08T00:00 3333
2022 [...]
+
+-- !sql_5_04 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}]
string2 text2 4.0 2022-08-08T00:00 2222 2022-08-08T12:10:10
+
+-- !sql_5_05 --
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+
+-- !sql_5_06 --
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+
+-- !sql_5_07 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+
+-- !sql_5_08 --
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+
+-- !sql_5_09 --
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+
+-- !sql_5_10 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+
+-- !sql_5_11 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}]
string2 text2 4.0 2022-08-08T00:00 2222 2022-08-08T12:10:10
+
+-- !sql_5_12 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] I'm not
null or empty string3 text3_4*5 5.0 2022-08-08T00:00 3333
2022 [...]
+
+-- !sql_5_13 --
+2022-08-08T20:10:10
+
+-- !sql_5_14 --
+2022-08-08T12:10:10
+
+-- !sql_5_15 --
+2022-08-08T20:10:10
+
+-- !sql_5_16 --
+I'm not null or empty
+
+-- !sql_5_17 --
+
+I'm not null or empty
+
+-- !sql_5_18 --
+I'm not null or empty
+
+-- !sql_5_19 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}]
string2 text2 4.0 2022-08-08T00:00 2222 2022-08-08T12:10:10
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] I'm not
null or empty string3 text3_4*5 5.0 2022-08-08T00:00 3333
2022 [...]
+
+-- !sql_5_20 --
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+
+-- !sql_6_02 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+
+-- !sql_6_03 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}]
string2 text2 4.0 2022-08-08T00:00 2222 2022-08-08T12:10:10
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] I'm not
null or empty string3 text3_4*5 5.0 2022-08-08T00:00 3333
2022 [...]
+
+-- !sql_6_04 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}]
string2 text2 4.0 2022-08-08T00:00 2222 2022-08-08T12:10:10
+
+-- !sql_6_05 --
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+
+-- !sql_6_06 --
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+
+-- !sql_6_07 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+
+-- !sql_6_08 --
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+
+-- !sql_6_09 --
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+
+-- !sql_6_10 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+
+-- !sql_6_11 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}]
string2 text2 4.0 2022-08-08T00:00 2222 2022-08-08T12:10:10
+
+-- !sql_6_12 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] I'm not
null or empty string3 text3_4*5 5.0 2022-08-08T00:00 3333
2022 [...]
+
+-- !sql_6_13 --
+2022-08-08T20:10:10
+
+-- !sql_6_14 --
+2022-08-08T12:10:10
+
+-- !sql_6_15 --
+2022-08-08T20:10:10
+
+-- !sql_6_16 --
+I'm not null or empty
+
+-- !sql_6_17 --
+
+I'm not null or empty
+
+-- !sql_6_18 --
+I'm not null or empty
+
+-- !sql_6_19 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
string1 text#1 3.14 2022-08-08T00:00 12345 2022-08-08T20:10:10
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}]
string2 text2 4.0 2022-08-08T00:00 2222 2022-08-08T12:10:10
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] I'm not
null or empty string3 text3_4*5 5.0 2022-08-08T00:00 3333
2022 [...]
+
+-- !sql_6_20 --
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+
+-- !sql_7_02 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_7_03 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N \N string4 2022-08-08T20:10:10 text3_4*5 6.0
2022-08-08T00:00 20 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
I'm not null or empty \N string3 2022-08-09T00:40:10 text3_4*5
5.0 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_7_04 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+
+-- !sql_7_05 --
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+
+-- !sql_7_06 --
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+
+-- !sql_7_07 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_7_08 --
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+
+-- !sql_7_09 --
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+
+-- !sql_7_10 --
+value1 value2
+
+-- !sql_7_11 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_7_12 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+
+-- !sql_7_13 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
I'm not null or empty \N string3 2022-08-09T00:40:10 text3_4*5
5.0 [...]
+
+-- !sql_7_14 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N \N string4 2022-08-08T20:10:10 text3_4*5 6.0
2022-08-08T00:00 20 [...]
+
+-- !sql_7_15 --
+2022-08-08T20:10:10
+
+-- !sql_7_16 --
+2022-08-08T12:10:10
+
+-- !sql_7_17 --
+2022-08-09T00:40:10
+
+-- !sql_7_18 --
+2022-08-08T20:10:10
+
+-- !sql_7_19 --
+I'm not null or empty
+
+-- !sql_7_20 --
+
+I'm not null or empty
+
+-- !sql_7_21 --
+I'm not null or empty
+
+-- !sql_7_22 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_7_23 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N \N string4 2022-08-08T20:10:10 text3_4*5 6.0
2022-08-08T00:00 20 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
I'm not null or empty \N string3 2022-08-09T00:40:10 text3_4*5
5.0 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_7_24 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N \N string4 2022-08-08T20:10:10 text3_4*5 6.0
2022-08-08T00:00 20 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
I'm not null or empty \N string3 2022-08-09T00:40:10 text3_4*5
5.0 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_7_25 --
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+
+-- !sql_7_26 --
+value1 value2
+
+-- !sql_8_01 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_8_02 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N \N string4 2022-08-08T20:10:10 text3_4*5 6.0
2022-08-08T00:00 20 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
I'm not null or empty \N string3 2022-08-09T00:40:10 text3_4*5
5.0 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_8_03 --
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+
+-- !sql_8_04 --
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+true 1 128 32768 -1 0 1.0 1.0 1.0 1.0
2020-01-01 2020-01-01T12:00 a d 192.168.0.1
{"name":"Andy","age":18}
+
+-- !sql_8_05 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_8_06 --
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+
+-- !sql_8_07 --
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+[1, 0, 1, 1] [1, -2, -3, 4] [128, 129, -129, -130] [32768, 32769, -32769,
-32770] [-1, 0, 1, 2] [0, 1, 2, 3] [1, 1.1, 1.2, 1.3] [1, 2, 3, 4]
[1, 2, 3, 4] [1, 2, 3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] ["a", "b", "c"] ["d", "e", "f"]
["192.168.0.1", "127.0.0.1"]
[{"name":"Andy","age":18},{"name":"Tim","age":28}]
+
+-- !sql_8_08 --
+value1 value2
+
+-- !sql_8_09 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_8_10 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+
+-- !sql_8_11 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
I'm not null or empty \N string3 2022-08-09T00:40:10 text3_4*5
5.0 [...]
+
+-- !sql_8_12 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N \N string4 2022-08-08T20:10:10 text3_4*5 6.0
2022-08-08T00:00 20 [...]
+
+-- !sql_8_13 --
+2022-08-08T20:10:10
+
+-- !sql_8_14 --
+2022-08-08T12:10:10
+
+-- !sql_8_15 --
+2022-08-09T00:40:10
+
+-- !sql_8_16 --
+2022-08-08T20:10:10
+
+-- !sql_8_17 --
+I'm not null or empty
+
+-- !sql_8_18 --
+
+I'm not null or empty
+
+-- !sql_8_19 --
+I'm not null or empty
+
+-- !sql_8_20 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_8_21 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N \N string4 2022-08-08T20:10:10 text3_4*5 6.0
2022-08-08T00:00 20 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
I'm not null or empty \N string3 2022-08-09T00:40:10 text3_4*5
5.0 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_8_22 --
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N \N string4 2022-08-08T20:10:10 text3_4*5 6.0
2022-08-08T00:00 20 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
\N string2 2022-08-08T12:10:10 text2 4.0
2022-08-08T00:00 2022-08- [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] \N
I'm not null or empty \N string3 2022-08-09T00:40:10 text3_4*5
5.0 [...]
+[1, 0, 1, 1] [1, -2, -3, 4] ["2020-01-01", "2020-01-02"] ["2020-01-01
12:00:00", "2020-01-02 13:01:01"] [1, 2, 3, 4] [1, 1.1, 1.2, 1.3] [1,
2, 3, 4] [32768, 32769, -32769, -32770] ["192.168.0.1", "127.0.0.1"]
["a", "b", "c"] [-1, 0, 1, 2]
[{"name":"Andy","age":18},{"name":"Tim","age":28}] [1, 2, 3, 4] [128,
129, -129, -130] ["d", "e", "f"] [0, 1, 2, 3]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] debug
\N This string can be quite lengthy string1 2022-08-08T20:10:10
[...]
+
+-- !sql_8_23 --
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
+[{"name":"Andy","age":18},{"name":"Tim","age":28}]
[{"last":"Smith","first":"John"},{"last":"White","first":"Alice"}] "Andy"
"White"
diff --git a/regression-test/suites/external_table_p0/es/test_es_query.groovy
b/regression-test/suites/external_table_p0/es/test_es_query.groovy
index 43e17b2b53b..b3b852831de 100644
--- a/regression-test/suites/external_table_p0/es/test_es_query.groovy
+++ b/regression-test/suites/external_table_p0/es/test_es_query.groovy
@@ -176,139 +176,165 @@ suite("test_es_query",
"p0,external,es,external_docker,external_docker_es") {
order_qt_sql23 """select * from test_v2 where esquery(c_long,
'{"term":{"c_long":"-1"}}');"""
order_qt_sql24 """select c_person, c_user, json_extract(c_person,
'\$.[0].name'), json_extract(c_user, '\$.[1].last') from test_v2;"""
- sql """switch test_es_query_es5"""
- order_qt_sql_5_02 """select * from test1 where test2='text#1'"""
- order_qt_sql_5_03 """select * from test2_20220808 where test4 >=
'2022-08-08 00:00:00' and test4 < '2022-08-08 23:59:59'"""
- order_qt_sql_5_04 """select * from test2_20220808 where
substring(test2, 2) = 'ext2'"""
- order_qt_sql_5_05 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test1"""
- order_qt_sql_5_06 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test2_20220808"""
- order_qt_sql_5_07 """select * from test1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
- order_qt_sql_5_08 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test1"""
- order_qt_sql_5_09 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test2_20220808"""
- order_qt_sql_5_10 """select * from test1 where test1='string1'"""
- order_qt_sql_5_11 """select * from test1 where test1='string2'"""
- order_qt_sql_5_12 """select * from test1 where test1='string3'"""
- order_qt_sql_5_13 """select test6 from test1 where test1='string1'"""
- order_qt_sql_5_14 """select test6 from test1 where test1='string2'"""
- order_qt_sql_5_15 """select test6 from test1 where test1='string3'"""
- order_qt_sql_5_16 """select message from test1 where message != ''"""
- order_qt_sql_5_17 """select message from test1 where message is not
null"""
- order_qt_sql_5_18 """select message from test1 where
not_null_or_empty(message)"""
- order_qt_sql_5_19 """select * from test1 where
esquery(c_unsigned_long, '{"match":{"c_unsigned_long":0}}')"""
- order_qt_sql_5_20 """select c_person, c_user, json_extract(c_person,
'\$.[0].name'), json_extract(c_user, '\$.[1].last') from test1;"""
+ def query_catalogs = { ->
+ sql """switch internal"""
+ sql """use regression_test_external_table_p0_es"""
+ order_qt_sql01 """select * from test_v1 where test2='text#1'"""
+ order_qt_sql02 """select * from test_v1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
+ order_qt_sql03 """select test4,test5,test6,test7,test8 from
test_v1 order by test8"""
+ order_qt_sql04 """select message from test_v1 where message !=
''"""
+ order_qt_sql05 """select message from test_v1 where message is not
null"""
+ order_qt_sql06 """select message from test_v1 where
not_null_or_empty(message)"""
+ order_qt_sql07 """select * from test_v1 where esquery(c_datetime,
'{"term":{"c_datetime":"2020-01-01 12:00:00"}}');"""
+ order_qt_sql08 """select c_person, c_user, json_extract(c_person,
'\$.[0].name'), json_extract(c_user, '\$.[1].last') from test_v1;"""
+
+ order_qt_sql20 """select * from test_v2 where test2='text#1'"""
+ order_qt_sql21 """select * from test_v2 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
+ order_qt_sql22 """select test4,test5,test6,test7,test8 from
test_v2 order by test8"""
+ order_qt_sql23 """select * from test_v2 where esquery(c_long,
'{"term":{"c_long":"-1"}}');"""
+ order_qt_sql24 """select c_person, c_user, json_extract(c_person,
'\$.[0].name'), json_extract(c_user, '\$.[1].last') from test_v2;"""
- sql """switch test_es_query_es6"""
- // order_qt_sql_6_01 """show tables"""
- order_qt_sql_6_02 """select * from test1 where test2='text#1'"""
- order_qt_sql_6_03 """select * from test2_20220808 where test4 >=
'2022-08-08 00:00:00' and test4 < '2022-08-08 23:59:59'"""
- order_qt_sql_6_04 """select * from test2_20220808 where
substring(test2, 2) = 'ext2'"""
- order_qt_sql_6_05 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test1"""
- order_qt_sql_6_06 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test2_20220808"""
- order_qt_sql_6_07 """select * from test1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
- order_qt_sql_6_08 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test1"""
- order_qt_sql_6_09 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test2_20220808"""
- order_qt_sql_6_10 """select * from test1 where test1='string1'"""
- order_qt_sql_6_11 """select * from test1 where test1='string2'"""
- order_qt_sql_6_12 """select * from test1 where test1='string3'"""
- order_qt_sql_6_13 """select test6 from test1 where test1='string1'"""
- order_qt_sql_6_14 """select test6 from test1 where test1='string2'"""
- order_qt_sql_6_15 """select test6 from test1 where test1='string3'"""
- order_qt_sql_6_16 """select message from test1 where message != ''"""
- order_qt_sql_6_17 """select message from test1 where message is not
null"""
- order_qt_sql_6_18 """select message from test1 where
not_null_or_empty(message)"""
- order_qt_sql_6_19 """select * from test1 where esquery(c_person,
'{"match":{"c_person.name":"Andy"}}')"""
- order_qt_sql_6_20 """select c_person, c_user, json_extract(c_person,
'\$.[0].name'), json_extract(c_user, '\$.[1].last') from test1;"""
+ sql """switch test_es_query_es5"""
+ order_qt_sql_5_02 """select * from test1 where test2='text#1'"""
+ order_qt_sql_5_03 """select * from test2_20220808 where test4 >=
'2022-08-08 00:00:00' and test4 < '2022-08-08 23:59:59'"""
+ order_qt_sql_5_04 """select * from test2_20220808 where
substring(test2, 2) = 'ext2'"""
+ order_qt_sql_5_05 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test1"""
+ order_qt_sql_5_06 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test2_20220808"""
+ order_qt_sql_5_07 """select * from test1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
+ order_qt_sql_5_08 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test1"""
+ order_qt_sql_5_09 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test2_20220808"""
+ order_qt_sql_5_10 """select * from test1 where test1='string1'"""
+ order_qt_sql_5_11 """select * from test1 where test1='string2'"""
+ order_qt_sql_5_12 """select * from test1 where test1='string3'"""
+ order_qt_sql_5_13 """select test6 from test1 where
test1='string1'"""
+ order_qt_sql_5_14 """select test6 from test1 where
test1='string2'"""
+ order_qt_sql_5_15 """select test6 from test1 where
test1='string3'"""
+ order_qt_sql_5_16 """select message from test1 where message !=
''"""
+ order_qt_sql_5_17 """select message from test1 where message is
not null"""
+ order_qt_sql_5_18 """select message from test1 where
not_null_or_empty(message)"""
+ order_qt_sql_5_19 """select * from test1 where
esquery(c_unsigned_long, '{"match":{"c_unsigned_long":0}}')"""
+ order_qt_sql_5_20 """select c_person, c_user,
json_extract(c_person, '\$.[0].name'), json_extract(c_user, '\$.[1].last') from
test1;"""
- List<List<String>> tables6N = sql """show tables"""
- boolean notContainHide = true
- tables6N.forEach {
- if (it[0] == ".hide"){
- notContainHide = false
+ sql """switch test_es_query_es6"""
+ // order_qt_sql_6_01 """show tables"""
+ order_qt_sql_6_02 """select * from test1 where test2='text#1'"""
+ order_qt_sql_6_03 """select * from test2_20220808 where test4 >=
'2022-08-08 00:00:00' and test4 < '2022-08-08 23:59:59'"""
+ order_qt_sql_6_04 """select * from test2_20220808 where
substring(test2, 2) = 'ext2'"""
+ order_qt_sql_6_05 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test1"""
+ order_qt_sql_6_06 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test2_20220808"""
+ order_qt_sql_6_07 """select * from test1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
+ order_qt_sql_6_08 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test1"""
+ order_qt_sql_6_09 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test2_20220808"""
+ order_qt_sql_6_10 """select * from test1 where test1='string1'"""
+ order_qt_sql_6_11 """select * from test1 where test1='string2'"""
+ order_qt_sql_6_12 """select * from test1 where test1='string3'"""
+ order_qt_sql_6_13 """select test6 from test1 where
test1='string1'"""
+ order_qt_sql_6_14 """select test6 from test1 where
test1='string2'"""
+ order_qt_sql_6_15 """select test6 from test1 where
test1='string3'"""
+ order_qt_sql_6_16 """select message from test1 where message !=
''"""
+ order_qt_sql_6_17 """select message from test1 where message is
not null"""
+ order_qt_sql_6_18 """select message from test1 where
not_null_or_empty(message)"""
+ order_qt_sql_6_19 """select * from test1 where esquery(c_person,
'{"match":{"c_person.name":"Andy"}}')"""
+ order_qt_sql_6_20 """select c_person, c_user,
json_extract(c_person, '\$.[0].name'), json_extract(c_user, '\$.[1].last') from
test1;"""
+
+ List<List<String>> tables6N = sql """show tables"""
+ boolean notContainHide = true
+ tables6N.forEach {
+ if (it[0] == ".hide"){
+ notContainHide = false
+ }
}
- }
- assertTrue(notContainHide)
+ assertTrue(notContainHide)
- sql """switch es6_hide"""
- List<List<String>> tables6Y = sql """show tables"""
- boolean containHide = false
- tables6Y.forEach {
- if (it[0] == ".hide"){
- containHide = true
+ sql """switch es6_hide"""
+ List<List<String>> tables6Y = sql """show tables"""
+ boolean containHide = false
+ tables6Y.forEach {
+ if (it[0] == ".hide"){
+ containHide = true
+ }
}
- }
- assertTrue(containHide)
+ assertTrue(containHide)
- sql """switch test_es_query_es7"""
- // order_qt_sql_7_01 """show tables"""
- order_qt_sql_7_02 """select * from test1 where test2='text#1'"""
- order_qt_sql_7_03 """select * from test2_20220808 where test4 >=
'2022-08-08 00:00:00' and test4 < '2022-08-08 23:59:59'"""
- order_qt_sql_7_04 """select * from test2_20220808 where
substring(test2, 2) = 'ext2'"""
- order_qt_sql_7_05 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test1"""
- order_qt_sql_7_06 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test2"""
- order_qt_sql_7_07 """select * from test1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
- order_qt_sql_7_08 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test1"""
- order_qt_sql_7_09 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test2"""
- order_qt_sql_7_10 """select * from test3_20231005"""
- order_qt_sql_7_11 """select * from test1 where test1='string1'"""
- order_qt_sql_7_12 """select * from test1 where test1='string2'"""
- order_qt_sql_7_13 """select * from test1 where test1='string3'"""
- order_qt_sql_7_14 """select * from test1 where test1='string4'"""
- order_qt_sql_7_15 """select test10 from test1 where test1='string1'"""
- order_qt_sql_7_16 """select test10 from test1 where test1='string2'"""
- order_qt_sql_7_17 """select test10 from test1 where test1='string3'"""
- order_qt_sql_7_18 """select test10 from test1 where test1='string4'"""
- order_qt_sql_7_19 """select message from test1 where message != ''"""
- order_qt_sql_7_20 """select message from test1 where message is not
null"""
- order_qt_sql_7_21 """select message from test1 where
not_null_or_empty(message)"""
- order_qt_sql_7_22 """select * from test1 where esquery(my_wildcard, '{
"wildcard": { "my_wildcard": { "value":"*quite*lengthy" } } }');"""
- order_qt_sql_7_23 """select * from test1 where level = 'debug'"""
- order_qt_sql_7_24 """select * from test1 where esquery(c_float,
'{"match":{"c_float":1.1}}')"""
- order_qt_sql_7_25 """select c_person, c_user, json_extract(c_person,
'\$.[0].name'), json_extract(c_user, '\$.[1].last') from test1;"""
+ sql """switch test_es_query_es7"""
+ // order_qt_sql_7_01 """show tables"""
+ order_qt_sql_7_02 """select * from test1 where test2='text#1'"""
+ order_qt_sql_7_03 """select * from test2_20220808 where test4 >=
'2022-08-08 00:00:00' and test4 < '2022-08-08 23:59:59'"""
+ order_qt_sql_7_04 """select * from test2_20220808 where
substring(test2, 2) = 'ext2'"""
+ order_qt_sql_7_05 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test1"""
+ order_qt_sql_7_06 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test2"""
+ order_qt_sql_7_07 """select * from test1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
+ order_qt_sql_7_08 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test1"""
+ order_qt_sql_7_09 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test2"""
+ order_qt_sql_7_10 """select * from test3_20231005"""
+ order_qt_sql_7_11 """select * from test1 where test1='string1'"""
+ order_qt_sql_7_12 """select * from test1 where test1='string2'"""
+ order_qt_sql_7_13 """select * from test1 where test1='string3'"""
+ order_qt_sql_7_14 """select * from test1 where test1='string4'"""
+ order_qt_sql_7_15 """select test10 from test1 where
test1='string1'"""
+ order_qt_sql_7_16 """select test10 from test1 where
test1='string2'"""
+ order_qt_sql_7_17 """select test10 from test1 where
test1='string3'"""
+ order_qt_sql_7_18 """select test10 from test1 where
test1='string4'"""
+ order_qt_sql_7_19 """select message from test1 where message !=
''"""
+ order_qt_sql_7_20 """select message from test1 where message is
not null"""
+ order_qt_sql_7_21 """select message from test1 where
not_null_or_empty(message)"""
+ order_qt_sql_7_22 """select * from test1 where
esquery(my_wildcard, '{ "wildcard": { "my_wildcard": { "value":"*quite*lengthy"
} } }');"""
+ order_qt_sql_7_23 """select * from test1 where level = 'debug'"""
+ order_qt_sql_7_24 """select * from test1 where esquery(c_float,
'{"match":{"c_float":1.1}}')"""
+ order_qt_sql_7_25 """select c_person, c_user,
json_extract(c_person, '\$.[0].name'), json_extract(c_user, '\$.[1].last') from
test1;"""
- List<List<String>> tables7N = sql """show tables"""
- boolean notContainHide7 = true
- tables7N.forEach {
- if (it[0] == ".hide"){
- notContainHide7 = false
+ List<List<String>> tables7N = sql """show tables"""
+ boolean notContainHide7 = true
+ tables7N.forEach {
+ if (it[0] == ".hide"){
+ notContainHide7 = false
+ }
}
- }
- assertTrue(notContainHide7)
+ assertTrue(notContainHide7)
- sql """switch es7_hide"""
- List<List<String>> tables7Y = sql """show tables"""
- boolean containeHide7 = false
- tables7Y.forEach {
- if (it[0] == (".hide")){
- containeHide7 = true
+ sql """switch es7_hide"""
+ List<List<String>> tables7Y = sql """show tables"""
+ boolean containeHide7 = false
+ tables7Y.forEach {
+ if (it[0] == (".hide")){
+ containeHide7 = true
+ }
}
+ assertTrue(containeHide7)
+
+ order_qt_sql_7_26 """select * from test3_20231005"""
+
+ sql """switch test_es_query_es8"""
+ order_qt_sql_8_01 """select * from test1 where test2='text#1'"""
+ order_qt_sql_8_02 """select * from test2_20220808 where test4 >=
'2022-08-08 00:00:00' and test4 < '2022-08-08 23:59:59'"""
+ order_qt_sql_8_03 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test1"""
+ order_qt_sql_8_04 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test2"""
+ order_qt_sql_8_05 """select * from test1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
+ order_qt_sql_8_06 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test1"""
+ order_qt_sql_8_07 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test2"""
+ order_qt_sql_8_08 """select * from test3_20231005"""
+ order_qt_sql_8_09 """select * from test1 where test1='string1'"""
+ order_qt_sql_8_10 """select * from test1 where test1='string2'"""
+ order_qt_sql_8_11 """select * from test1 where test1='string3'"""
+ order_qt_sql_8_12 """select * from test1 where test1='string4'"""
+ order_qt_sql_8_13 """select test10 from test1 where
test1='string1'"""
+ order_qt_sql_8_14 """select test10 from test1 where
test1='string2'"""
+ order_qt_sql_8_15 """select test10 from test1 where
test1='string3'"""
+ order_qt_sql_8_16 """select test10 from test1 where
test1='string4'"""
+ order_qt_sql_8_17 """select message from test1 where message !=
''"""
+ order_qt_sql_8_18 """select message from test1 where message is
not null"""
+ order_qt_sql_8_19 """select message from test1 where
not_null_or_empty(message)"""
+ order_qt_sql_8_20 """select * from test1 where
esquery(my_wildcard, '{ "wildcard": { "my_wildcard": { "value":"*quite*lengthy"
} } }');"""
+ order_qt_sql_8_21 """select * from test1 where level = 'debug'"""
+ order_qt_sql_8_22 """select * from test1 where esquery(c_ip,
'{"match":{"c_ip":"192.168.0.1"}}')"""
+ order_qt_sql_8_23 """select c_person, c_user,
json_extract(c_person, '\$.[0].name'), json_extract(c_user, '\$.[1].last') from
test1;"""
+
}
- assertTrue(containeHide7)
- order_qt_sql_7_26 """select * from test3_20231005"""
+ sql """set enable_es_shard_scroll=true"""
+ query_catalogs()
- sql """switch test_es_query_es8"""
- order_qt_sql_8_01 """select * from test1 where test2='text#1'"""
- order_qt_sql_8_02 """select * from test2_20220808 where test4 >=
'2022-08-08 00:00:00' and test4 < '2022-08-08 23:59:59'"""
- order_qt_sql_8_03 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test1"""
- order_qt_sql_8_04 """select c_bool[1], c_byte[1], c_short[1],
c_integer[1], c_long[1], c_unsigned_long[1], c_float[1], c_half_float[1],
c_double[1], c_scaled_float[1], c_date[1], c_datetime[1], c_keyword[1],
c_text[1], c_ip[1], json_extract(c_person, '\$.[0]') from test2"""
- order_qt_sql_8_05 """select * from test1 where esquery(test2,
'{"match":{"test2":"text#1"}}')"""
- order_qt_sql_8_06 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test1"""
- order_qt_sql_8_07 """select c_bool, c_byte, c_short, c_integer,
c_long, c_unsigned_long, c_float, c_half_float, c_double, c_scaled_float,
c_date, c_datetime, c_keyword, c_text, c_ip, c_person from test2"""
- order_qt_sql_8_08 """select * from test3_20231005"""
- order_qt_sql_8_09 """select * from test1 where test1='string1'"""
- order_qt_sql_8_10 """select * from test1 where test1='string2'"""
- order_qt_sql_8_11 """select * from test1 where test1='string3'"""
- order_qt_sql_8_12 """select * from test1 where test1='string4'"""
- order_qt_sql_8_13 """select test10 from test1 where test1='string1'"""
- order_qt_sql_8_14 """select test10 from test1 where test1='string2'"""
- order_qt_sql_8_15 """select test10 from test1 where test1='string3'"""
- order_qt_sql_8_16 """select test10 from test1 where test1='string4'"""
- order_qt_sql_8_17 """select message from test1 where message != ''"""
- order_qt_sql_8_18 """select message from test1 where message is not
null"""
- order_qt_sql_8_19 """select message from test1 where
not_null_or_empty(message)"""
- order_qt_sql_8_20 """select * from test1 where esquery(my_wildcard, '{
"wildcard": { "my_wildcard": { "value":"*quite*lengthy" } } }');"""
- order_qt_sql_8_21 """select * from test1 where level = 'debug'"""
- order_qt_sql_8_22 """select * from test1 where esquery(c_ip,
'{"match":{"c_ip":"192.168.0.1"}}')"""
- order_qt_sql_8_23 """select c_person, c_user, json_extract(c_person,
'\$.[0].name'), json_extract(c_user, '\$.[1].last') from test1;"""
+ sql """set enable_es_shard_scroll=false"""
+ query_catalogs()
}
-}
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]