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 9ed56b9d2a0 [cherry-pick](branch2.0) add constant_keyword wildcard 
data type (#30947) (#31119)
9ed56b9d2a0 is described below

commit 9ed56b9d2a01987bba684b5d3594019e73b03934
Author: Guangdong Liu <liug...@gmail.com>
AuthorDate: Thu Feb 22 14:25:44 2024 +0800

    [cherry-pick](branch2.0) add constant_keyword wildcard data type (#30947) 
(#31119)
    
    bp #30947
---
 .../elasticsearch/scripts/data/data1.json          |  4 +-
 .../elasticsearch/scripts/index/es7_test1.json     |  7 +++
 docs/en/docs/lakehouse/multi-catalog/es.md         | 66 +++++++++++-----------
 docs/zh-CN/docs/lakehouse/multi-catalog/es.md      | 66 +++++++++++-----------
 .../doris/external/elasticsearch/EsUtil.java       |  2 +
 .../data/external_table_p0/es/test_es_query.out    | 60 +++++++++++++-------
 .../es/test_es_query_no_http_url.out               |  4 +-
 .../external_table_p0/es/test_es_query.groovy      |  4 ++
 8 files changed, 125 insertions(+), 88 deletions(-)

diff --git 
a/docker/thirdparties/docker-compose/elasticsearch/scripts/data/data1.json 
b/docker/thirdparties/docker-compose/elasticsearch/scripts/data/data1.json
index 82aa4781641..7eb7f9c94f5 100755
--- a/docker/thirdparties/docker-compose/elasticsearch/scripts/data/data1.json
+++ b/docker/thirdparties/docker-compose/elasticsearch/scripts/data/data1.json
@@ -27,5 +27,7 @@
   "c_person": [
     {"name": "Andy", "age": 18},
     {"name": "Tim", "age": 28}
-  ]
+  ],
+  "my_wildcard": "This string can be quite lengthy",
+  "level": "debug"
 }
diff --git 
a/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es7_test1.json 
b/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es7_test1.json
index 604de9964ea..ebca5899ae2 100755
--- 
a/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es7_test1.json
+++ 
b/docker/thirdparties/docker-compose/elasticsearch/scripts/index/es7_test1.json
@@ -110,6 +110,13 @@
             "ignore_above": 256
           }
         }
+      },
+      "my_wildcard": {
+        "type": "wildcard"
+      },
+      "level": {
+        "type": "constant_keyword",
+        "value": "debug"
       }
     }
   }
diff --git a/docs/en/docs/lakehouse/multi-catalog/es.md 
b/docs/en/docs/lakehouse/multi-catalog/es.md
index 03f926a3f51..0f2d249a62a 100644
--- a/docs/en/docs/lakehouse/multi-catalog/es.md
+++ b/docs/en/docs/lakehouse/multi-catalog/es.md
@@ -50,18 +50,18 @@ After switching to the ES Catalog, you will be in the 
`dafault_db`  so you don't
 
 ### Parameter Description
 
-| Parameter              | Required or Not | Default Value | Description       
                                           |
-| ---------------------- | --------------- | ------------- | 
------------------------------------------------------------ |
-| `hosts`                | Yes             |               | ES address, can 
be one or multiple addresses, or the load balancer address of ES |
-| `user`                 | No              | Empty         | ES username       
                                           |
-| `password`             | No              | Empty         | Password of the 
corresponding user                           |
-| `doc_value_scan`       | No              | true          | Whether to obtain 
value of the target field by ES/Lucene columnar storage |
-| `keyword_sniff`        | No              | true          | Whether to sniff 
the text.fields in ES based on keyword; If this is set to false, the system 
will perform matching after tokenization. |
+| Parameter              | Required or Not | Default Value | Description       
                                                                                
                                                |
+|------------------------|-----------------|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------|
+| `hosts`                | Yes             |               | ES address, can 
be one or multiple addresses, or the load balancer address of ES                
                                                  |
+| `user`                 | No              | Empty         | ES username       
                                                                                
                                                |
+| `password`             | No              | Empty         | Password of the 
corresponding user                                                              
                                                  |
+| `doc_value_scan`       | No              | true          | Whether to obtain 
value of the target field by ES/Lucene columnar storage                         
                                                |
+| `keyword_sniff`        | No              | true          | Whether to sniff 
the text.fields in ES based on keyword; If this is set to false, the system 
will perform matching after tokenization.            |
 | `nodes_discovery`      | No              | true          | Whether to enable 
ES node discovery, set to true by default; set to false in network isolation 
environments and only connected to specified nodes |
-| `ssl`                  | No              | false         | Whether to enable 
HTTPS access mode for ES, currently follows a "Trust All" method in FE/BE |
-| `mapping_es_id`        | No              | false         | Whether to map 
the  `_id`  field in the ES index             |
-| `like_push_down`       | No              | true          | Whether to 
transform like to wildcard push down to es, this increases the cpu consumption 
of the es. |
-| `include_hidden_index` | No              | false         | Whether to 
include hidden index, default to false.           |
+| `ssl`                  | No              | false         | Whether to enable 
HTTPS access mode for ES, currently follows a "Trust All" method in FE/BE       
                                                |
+| `mapping_es_id`        | No              | false         | Whether to map 
the  `_id`  field in the ES index                                               
                                                   |
+| `like_push_down`       | No              | true          | Whether to 
transform like to wildcard push down to es, this increases the cpu consumption 
of the es.                                              |
+| `include_hidden_index` | No              | false         | Whether to 
include hidden index, default to false.                                         
                                                       |
 
 > 1. In terms of authentication, only HTTP Basic authentication is supported 
 > and it requires the user to have read privilege for the index and paths 
 > including `/_cluster/state/` and `_nodes/http` ; if you have not enabled 
 > security authentication for the cluster, you don't need to set the  `user` 
 > and `password`.
 >
@@ -69,26 +69,28 @@ After switching to the ES Catalog, you will be in the 
`dafault_db`  so you don't
 
 ## Column Type Mapping
 
-| ES Type       | Doris Type  | Comment                                        
                         |
-| ------------- | ----------- 
|-------------------------------------------------------------------------|
-| null          | null        |                                                
                         |
-| boolean       | boolean     |                                                
                         |
-| byte          | tinyint     |                                                
                         |
-| short         | smallint    |                                                
                         |
-| integer       | int         |                                                
                         |
-| long          | bigint      |                                                
                         |
-| unsigned_long | largeint    |                                                
                         |
-| float         | float       |                                                
                         |
-| half_float    | float       |                                                
                         |
-| double        | double      |                                                
                         |
-| scaled_float  | double      |                                                
                         |
-| date          | date        | Only support default/yyyy-MM-dd 
HH:mm:ss/yyyy-MM-dd/epoch_millis format |
-| keyword       | string      |                                                
                         |
-| text          | string      |                                                
                         |
-| ip            | string      |                                                
                         |
-| nested        | string      |                                                
                         |
-| object        | string      |                                                
                         |
-| other         | unsupported |                                                
                         |
+| ES Type          | Doris Type  | Comment                                     
                            |
+|------------------|-------------|-------------------------------------------------------------------------|
+| null             | null        |                                             
                            |
+| boolean          | boolean     |                                             
                            |
+| byte             | tinyint     |                                             
                            |
+| short            | smallint    |                                             
                            |
+| integer          | int         |                                             
                            |
+| long             | bigint      |                                             
                            |
+| unsigned_long    | largeint    |                                             
                            |
+| float            | float       |                                             
                            |
+| half_float       | float       |                                             
                            |
+| double           | double      |                                             
                            |
+| scaled_float     | double      |                                             
                            |
+| date             | date        | Only support default/yyyy-MM-dd 
HH:mm:ss/yyyy-MM-dd/epoch_millis format |
+| keyword          | string      |                                             
                            |
+| text             | string      |                                             
                            |
+| ip               | string      |                                             
                            |
+| constant_keyword | string      |                                             
                            |
+| wildcard         | string      |                                             
                            |
+| nested           | string      |                                             
                            |
+| object           | string      |                                             
                            |
+| other            | unsupported |                                             
                            |
 
 <version since="dev">
 
@@ -167,7 +169,7 @@ ES Catalogs support predicate pushdown to ES, which means 
only the filtered data
 For the sake of optimization, operators will be converted into the following 
ES queries:
 
 | SQL syntax     |        ES 5.x+ syntax        |
-| -------------- | :--------------------------: |
+|----------------|:----------------------------:|
 | =              |          term query          |
 | in             |         terms query          |
 | > , < , >= , ⇐ |         range query          |
diff --git a/docs/zh-CN/docs/lakehouse/multi-catalog/es.md 
b/docs/zh-CN/docs/lakehouse/multi-catalog/es.md
index aabfe3dffd5..abb3099b73d 100644
--- a/docs/zh-CN/docs/lakehouse/multi-catalog/es.md
+++ b/docs/zh-CN/docs/lakehouse/multi-catalog/es.md
@@ -69,26 +69,28 @@ CREATE CATALOG es PROPERTIES (
 
 ## 列类型映射
 
-| ES Type | Doris Type | Comment                                               
     |
-|---|---|------------------------------------------------------------|
-|null| null||
-| boolean | boolean |                                                          
  |
-| byte| tinyint|                                                            |
-| short| smallint|                                                            |
-| integer| int|                                                            |
-| long| bigint|                                                            |
-| unsigned_long| largeint |                                                    
        |
-| float| float|                                                            |
-| half_float| float|                                                           
 |
-| double | double |                                                            
|
-| scaled_float| double |                                                       
     |
-| date | date | 仅支持 default/yyyy-MM-dd HH:mm:ss/yyyy-MM-dd/epoch_millis 格式 |
-| keyword | string |                                                           
 |
-| text |string |                                                            |
-| ip |string |                                                            |
-| nested |string |                                                            |
-| object |string |                                                            |
-|other| unsupported ||
+| ES Type          | Doris Type  | Comment                                     
               |
+|------------------|-------------|------------------------------------------------------------|
+| null             | null        |                                             
               |
+| boolean          | boolean     |                                             
               |
+| byte             | tinyint     |                                             
               |
+| short            | smallint    |                                             
               |
+| integer          | int         |                                             
               |
+| long             | bigint      |                                             
               |
+| unsigned_long    | largeint    |                                             
               |
+| float            | float       |                                             
               |
+| half_float       | float       |                                             
               |
+| double           | double      |                                             
               |
+| scaled_float     | double      |                                             
               |
+| date             | date        | 仅支持 default/yyyy-MM-dd 
HH:mm:ss/yyyy-MM-dd/epoch_millis 格式 |
+| keyword          | string      |                                             
               |
+| text             | string      |                                             
               |
+| ip               | string      |                                             
               |
+| constant_keyword | string      |                                             
               |
+| wildcard         | string      |                                             
               |
+| nested           | string      |                                             
               |
+| object           | string      |                                             
               |
+| other            | unsupported |                                             
               |
 
 <version since="dev">
 
@@ -161,18 +163,18 @@ ES Catalog 支持过滤条件的下推: 过滤条件下推给ES,这样只有
 
 下面的操作符(Operators)会被优化成如下ES Query:
 
-| SQL syntax  | ES 5.x+ syntax | 
-|-------|:---:|
-| =   | term query|
-| in  | terms query   |
-| > , < , >= , ⇐  | range query |
-| and  | bool.filter   |
-| or  | bool.should   |
-| not  | bool.must_not   |
-| not in  | bool.must_not + terms query |
-| is\_not\_null  | exists query |
-| is\_null  | bool.must_not + exists query |
-| esquery  | ES原生json形式的QueryDSL   |
+| SQL syntax     |        ES 5.x+ syntax        | 
+|----------------|:----------------------------:|
+| =              |          term query          |
+| in             |         terms query          |
+| > , < , >= , ⇐ |         range query          |
+| and            |         bool.filter          |
+| or             |         bool.should          |
+| not            |        bool.must_not         |
+| not in         | bool.must_not + terms query  |
+| is\_not\_null  |         exists query         |
+| is\_null       | bool.must_not + exists query |
+| esquery        |     ES原生json形式的QueryDSL      |
 
 ### 启用列式扫描优化查询速度(enable\_docvalue\_scan=true)
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsUtil.java 
b/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsUtil.java
index 021e92260b6..fd1cd22d4b5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsUtil.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsUtil.java
@@ -295,6 +295,8 @@ public class EsUtil {
                 case "ip":
                 case "nested":
                 case "object":
+                case "wildcard":
+                case "constant_keyword":
                     type = ScalarType.createStringType();
                     break;
                 default:
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 3b995832c4d..78556a3cd46 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
@@ -102,16 +102,16 @@ I'm not null or empty
 I'm not null or empty
 
 -- !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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
-[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]    \N      string4 2022-08-08T20:10:10     text3_4*5       
6.0     2022-08-08T00:00        2022-08-11T12:10:10     1660191010000   
2022-08-11T12:10:10     2022-08-11T11: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]            string2 2022-08-08T12:10:10     text2   4.0     
2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12:10:10     2222
-[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]    I'm not null or empty   string3 2022-08-09T00:40:10     
text3_4*5       5.0     2022-08-08T00:00        2022-08-10T12:10:10     
1660104610000   2022-08-10T12: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]    \N      \N      \N      string4 2022-08-08T20:10:10     
text3_4*5       6.0     2022-08-08T00:00        2022-08-11T12:10:10     
1660191010000   2022-08-11T12:10:10     2022-08-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]    \N              \N      string2 2022-08-08T12:10:10     
text2   4.0     2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12: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]    \N      I'm not null or empty   \N      string3 
2022-08-09T00:40:10     text3_4*5       5.0     2022-08-08T00:00        
2022-08-10T12:10:10     1660104610000   2022-08-10T [...]
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !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]            string2 2022-08-08T12:10:10     text2   4.0     
2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12:10:10     2222
+[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]    \N              \N      string2 2022-08-08T12:10:10     
text2   4.0     2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12:10 [...]
 
 -- !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}
@@ -126,7 +126,7 @@ 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}
 
 -- !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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !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}"]
@@ -144,16 +144,16 @@ 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.
 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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !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]            string2 2022-08-08T12:10:10     text2   4.0     
2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12:10:10     2222
+[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]    \N              \N      string2 2022-08-08T12:10:10     
text2   4.0     2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12:10 [...]
 
 -- !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]    I'm not null or empty   string3 2022-08-09T00:40:10     
text3_4*5       5.0     2022-08-08T00:00        2022-08-10T12:10:10     
1660104610000   2022-08-10T12: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]    \N      I'm not null or empty   \N      string3 
2022-08-09T00:40:10     text3_4*5       5.0     2022-08-08T00:00        
2022-08-10T12:10:10     1660104610000   2022-08-10T [...]
 
 -- !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]    \N      string4 2022-08-08T20:10:10     text3_4*5       
6.0     2022-08-08T00:00        2022-08-11T12:10:10     1660191010000   
2022-08-11T12:10:10     2022-08-11T11: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]    \N      \N      \N      string4 2022-08-08T20:10:10     
text3_4*5       6.0     2022-08-08T00:00        2022-08-11T12:10:10     
1660191010000   2022-08-11T12:10:10     2022-08-11 [...]
 
 -- !sql_7_15 --
 2022-08-08T20:10:10
@@ -179,17 +179,26 @@ 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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
+
+-- !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]    \N      \N      \N      string4 2022-08-08T20:10:10     
text3_4*5       6.0     2022-08-08T00:00        2022-08-11T12:10:10     
1660191010000   2022-08-11T12:10:10     2022-08-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]    \N              \N      string2 2022-08-08T12:10:10     
text2   4.0     2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12: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]    \N      I'm not null or empty   \N      string3 
2022-08-09T00:40:10     text3_4*5       5.0     2022-08-08T00:00        
2022-08-10T12:10:10     1660104610000   2022-08-10T [...]
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
+
 -- !sql_7_19 --
 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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
-[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]    \N      string4 2022-08-08T20:10:10     text3_4*5       
6.0     2022-08-08T00:00        2022-08-11T12:10:10     1660191010000   
2022-08-11T12:10:10     2022-08-11T11: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]            string2 2022-08-08T12:10:10     text2   4.0     
2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12:10:10     2222
-[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]    I'm not null or empty   string3 2022-08-09T00:40:10     
text3_4*5       5.0     2022-08-08T00:00        2022-08-10T12:10:10     
1660104610000   2022-08-10T12: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]    \N      \N      \N      string4 2022-08-08T20:10:10     
text3_4*5       6.0     2022-08-08T00:00        2022-08-11T12:10:10     
1660191010000   2022-08-11T12:10:10     2022-08-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]    \N              \N      string2 2022-08-08T12:10:10     
text2   4.0     2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12: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]    \N      I'm not null or empty   \N      string3 
2022-08-09T00:40:10     text3_4*5       5.0     2022-08-08T00:00        
2022-08-10T12:10:10     1660104610000   2022-08-10T [...]
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !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}
@@ -204,7 +213,7 @@ 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}
 
 -- !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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !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}"]
@@ -222,16 +231,16 @@ 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.
 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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !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]            string2 2022-08-08T12:10:10     text2   4.0     
2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12:10:10     2222
+[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]    \N              \N      string2 2022-08-08T12:10:10     
text2   4.0     2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12:10 [...]
 
 -- !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]    I'm not null or empty   string3 2022-08-09T00:40:10     
text3_4*5       5.0     2022-08-08T00:00        2022-08-10T12:10:10     
1660104610000   2022-08-10T12: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]    \N      I'm not null or empty   \N      string3 
2022-08-09T00:40:10     text3_4*5       5.0     2022-08-08T00:00        
2022-08-10T12:10:10     1660104610000   2022-08-10T [...]
 
 -- !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]    \N      string4 2022-08-08T20:10:10     text3_4*5       
6.0     2022-08-08T00:00        2022-08-11T12:10:10     1660191010000   
2022-08-11T12:10:10     2022-08-11T11: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]    \N      \N      \N      string4 2022-08-08T20:10:10     
text3_4*5       6.0     2022-08-08T00:00        2022-08-11T12:10:10     
1660191010000   2022-08-11T12:10:10     2022-08-11 [...]
 
 -- !sql_8_13 --
 2022-08-08T20:10:10
@@ -257,3 +266,12 @@ 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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
+
+-- !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]    \N      \N      \N      string4 2022-08-08T20:10:10     
text3_4*5       6.0     2022-08-08T00:00        2022-08-11T12:10:10     
1660191010000   2022-08-11T12:10:10     2022-08-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]    \N              \N      string2 2022-08-08T12:10:10     
text2   4.0     2022-08-08T00:00        2022-08-09T12:10:10     1660018210000   
2022-08-09T12:10:10     2022-08-09T12: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]    \N      I'm not null or empty   \N      string3 
2022-08-09T00:40:10     text3_4*5       5.0     2022-08-08T00:00        
2022-08-10T12:10:10     1660104610000   2022-08-10T [...]
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
+
diff --git 
a/regression-test/data/external_table_p0/es/test_es_query_no_http_url.out 
b/regression-test/data/external_table_p0/es/test_es_query_no_http_url.out
index edab82a4056..d2ce4d495f7 100644
--- a/regression-test/data/external_table_p0/es/test_es_query_no_http_url.out
+++ b/regression-test/data/external_table_p0/es/test_es_query_no_http_url.out
@@ -9,8 +9,8 @@
 [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]    \N      string1 text#1  3.14    2022-08-08T00:00        
12345   2022-08-08T20:10:10
 
 -- !sql71 --
-[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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
 -- !sql81 --
-[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]    \N      string1 2022-08-08T20:10:10     text#1  3.14    
2022-08-08T00:00        2022-08-08T12:10:10     1659931810000   
2022-08-08T12:10:10     2022-08-08T20:10:10     12345
+[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]    debug   \N      This string can be quite lengthy        
string1 2022-08-08T20:10:10     text#1  3.14    2022-08-08T00:00        
2022-08-08T12:10:10     1659931810000 [...]
 
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 6c8f71dfc93..9acf67891e5 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
@@ -220,6 +220,8 @@ suite("test_es_query", 
"p0,external,es,external_docker,external_docker_es") {
         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'"""
 
         List<List<String>> tables7N = sql """show tables"""
         boolean notContainHide7 = true
@@ -262,5 +264,7 @@ suite("test_es_query", 
"p0,external,es,external_docker,external_docker_es") {
         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'"""
     }
 }


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

Reply via email to