This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 845533434fe Support OpenGauss tsquery type parse (#28370)
845533434fe is described below
commit 845533434fea924726936e00f89173247737c2bf
Author: Zichao <[email protected]>
AuthorDate: Thu Sep 7 16:40:02 2023 +1200
Support OpenGauss tsquery type parse (#28370)
---
.../src/main/antlr4/imports/opengauss/BaseRule.g4 | 1 +
.../main/resources/case/dml/select-expression.xml | 16 ++++++++++
.../sql/supported/dml/select-expression.xml | 1 +
.../main/resources/sql/unsupported/unsupported.xml | 35 ----------------------
4 files changed, 18 insertions(+), 35 deletions(-)
diff --git
a/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
b/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
index 2858ced53ec..aa7744bb630 100644
--- a/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
+++ b/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
@@ -450,6 +450,7 @@ unreservedWord
| INT4RANGE
| NUMRANGE
| DATERANGE
+ | TSQUERY
;
typeFuncNameKeyword
diff --git a/test/it/parser/src/main/resources/case/dml/select-expression.xml
b/test/it/parser/src/main/resources/case/dml/select-expression.xml
index b70cd7983d8..22842474aa4 100644
--- a/test/it/parser/src/main/resources/case/dml/select-expression.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-expression.xml
@@ -3077,4 +3077,20 @@
</expression-projection>
</projections>
</select>
+
+ <select sql-case-id="select_tsquery">
+ <projections start-index="7" stop-index="24">
+ <expression-projection start-index="7" stop-index="24"
text="'super:*'::tsquery">
+ <binary-operation-expression start-index="7" stop-index="24">
+ <left>
+ <literal-expression start-index="7" stop-index="15"
value="super:*" />
+ </left>
+ <operator>::</operator>
+ <right>
+ <column start-index="17" stop-index="24"
name="tsquery" />
+ </right>
+ </binary-operation-expression>
+ </expression-projection>
+ </projections>
+ </select>
</sql-parser-test-cases>
diff --git
a/test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml
index 07fb4b61557..46c8cbb7acb 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml
@@ -131,4 +131,5 @@
<sql-case id="select_int8range" value="SELECT int8range(5,15) *
int8range(10,20) AS RESULT;" db-types="openGauss" />
<sql-case id="select_int4range" value="SELECT int4range(2,4) <@
int4range(1,7) AS RESULT;" db-types="openGauss" />
<sql-case id="select_lower_inf_function" value="SELECT
lower_inf('(,)'::daterange) AS RESULT;" db-types="openGauss" />
+ <sql-case id="select_tsquery" value="SELECT 'super:*'::tsquery;"
db-types="openGauss" />
</sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
b/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
index 9b1cf441e28..a46faf20ed0 100644
--- a/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
+++ b/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
@@ -106,11 +106,6 @@
<sql-case id="unsupported_select_case_for_opengauss_96" value="select
'[138,0.58,-369,1.25e+6]'::jsonb ->> 192.168.100.128/25;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_97" value="select
'{&quot;a&quot;: 1, &quot;b&quot;: {&quot;a&quot;: 2,
&quot;b&quot;: null}}'::json ->> 2021-05-31 12:59:08;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_98" value="select
'{&quot;foo&quot;: [true, &quot;bar&quot;],
&quot;tags&quot;: {&quot;a&quot;: 1, &quot;b&quot;:
null}}'::json ->> 192.168.100.128/25;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_100" value="select
'fat:ab & cat'::tsquery;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_101" value="select
'super:*'::tsquery;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_102" value="select
'fat & rat'::tsquery;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_103" value="select
'fat & (rat | cat)'::tsquery;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_104" value="select
'fat & rat & ! cat'::tsquery;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_105" value="select 'a
fat cat sat on a mat and ate a fat rat'::tsvector;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_106" value="select
$$the lexeme ' ' contains spaces$$::tsvector;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_107" value="select
'a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11
rat:12'::tsvector;" db-types="openGauss" />
@@ -271,59 +266,29 @@
<sql-case id="unsupported_select_case_for_opengauss_444" value="select
extract(week from timestamp '2001-02-16 20:38:40') from sys_dummy;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_447" value="select
atan(11 11) from sys_dummy;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_448" value="select
atan(,) from sys_dummy;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_449" value="select
to_tsvector('fat cats ate fat rats') @@ 'fa:*'::tsquery as result;"
db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_450" value="select
to_tsvector('fat cats ate rats') @@(!!'rat'::tsquery) as result;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_451" value="select
$$the lexeme ' ' , contains spaces$$::tsvector@@ ','::tsquery as result;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_452" value="select
setweight(body :: tsvector, 'a') from ts_zhparser;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_453" value="select
to_tsvector('english', 'the fat rats')@@ 'the'::tsquery as result;"
db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_454" value="select
to_tsvector('fat cats ate rats') @@(!!'ratt'::tsquery) as result;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_455" value="select
'fat cats ate'::tsvector || 'a b c'::tsvector;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_456" value="select
'fat | rat'::tsquery && 'cat'::tsquery as result;" db-types="openGauss"
/>
- <sql-case id="unsupported_select_case_for_opengauss_457" value="select
to_tsvector('fat cats ate rats') @@('rat'::tsquery && 'cat'::tsquery)
as result;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_458" value="select
'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector as result;" db-types="openGauss"
/>
<sql-case id="unsupported_select_case_for_opengauss_459" value="select 'a
b'::tsvector || 'c:1 d:2 b:3'::tsvector as result;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_460" value="select
setweight('fat:2,4 cat:3 rat:5b'::tsvector, 1);" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_461" value="select
setweight('fat:2,4 cat:3 rat:5b'::tsvector, '');" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_462" value="select
$$the lexeme ' ' , contains spaces$$::tsvector || 'c:1 d:2 b:3'::tsvector
as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_463" value="select
numnode('(fat & rat) | cat'::tsquery);" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_464" value="select
length(1::tsvector);" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_465" value="select
strip(body :: tsvector) from ts_zhparser;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_466" value="select
length('a b c'::tsvector || 'd e f'::tsvector);" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_467" value="select
length('fat:2,4 cat:3 rat:5a'::tsvector);" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_468" value="select
length($$the lexeme ' ' contains spaces$$::tsvector);" db-types="openGauss"
/>
<sql-case id="unsupported_select_case_for_opengauss_469" value="select
length('fat:2,4 cat:3'::tsvector);" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_470" value="select
numnode(body :: tsquery) from ts_zhparser;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_471" value="select
'fat'::tsquery = 'fat'::tsquery as result;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_472" value="select
length('fat rat'::tsvector);" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_473" value="select
numnode(bodyy :: tsquery) from ts_zhparser;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_474" value="select
'cat & rat'::tsquery <@ 'cat'::tsquery as result;" db-types="openGauss"
/>
- <sql-case id="unsupported_select_case_for_opengauss_475" value="select
'fat'::tsquery = 'fatt'::tsquery as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_476" value="select
'cat'::tsquery <@ 'cat & rat'::tsquery as result;" db-types="openGauss"
/>
- <sql-case id="unsupported_select_case_for_opengauss_477" value="select
'cat & rat'::tsquery <@ 'cat& rat'::tsquery as result;"
db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_478" value="select
'cat'::tsquery @> 'cat'::tsquery as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_479" value="select
'cat&fat'::tsquery @> 'cat'::tsquery as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_480" value="select
'fat'::tsquery > 'fat'::tsquery as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_481" value="select
'fat'::tsquery > 'fat & rat'::tsquery as result;" db-types="openGauss"
/>
- <sql-case id="unsupported_select_case_for_opengauss_482" value="select
'fat & rat'::tsquery > 'fat'::tsquery as result;" db-types="openGauss"
/>
- <sql-case id="unsupported_select_case_for_opengauss_483" value="select
'cat'::tsquery @> 'cat & rat'::tsquery as result;" db-types="openGauss"
/>
<sql-case id="unsupported_select_case_for_opengauss_484" value="select
'fat cats ate fat rats'::tsvector @@ ('fat'::tsquery &&
'ate'::tsquery) as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_485" value="select
'fat & rat'::tsquery || 'cat'::tsquery as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_486" value="select
to_tsvector('fat cats ate rats') @@('rat'::tsquery || 'cat'::tsquery) as
result;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_487" value="select
'fat cats ate fat rats'::tsvector @@ ('fat'::tsquery &&
'ateee'::tsquery) as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_488" value="select
'fat | rat'::tsquery || 'cat'::tsquery as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_489" value="select
'fat:ab'::tsquery && 'fa:ab'::tsquery as result;" db-types="openGauss"
/>
- <sql-case id="unsupported_select_case_for_opengauss_490" value="select
'fat & rat'::tsquery && 'cat'::tsquery as result;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_491" value="select
to_tsvector('fat cats ate ate' )|| 'a b c'::tsvector || 'd e f'::tsvector as
result;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_492" value="select
'fat cats ate fat rats'::tsvector @@ ('fat'::tsquery || 'ateee'::tsquery) as
result;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_493" value="select
'a:1a '::tsvector|| 'b:1a '::tsvector as result;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_494" value="select
'fat cats ate fat rats'::tsvector @@ to_tsquery('fat & rat')as result;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_495" value="select
'a:1 fat:2 cat:3 sat:4 on:5'::tsvector @@ 'fat'::tsquery as result;"
db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_496" value="select
'rat'::tsquery && 'cat'::tsquery as result;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_497" value="select
'fat cats ate fat rats'::tsvector @@ ('fat11'::tsquery || 'ateee'::tsquery)
as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_498" value="select
'rat'::tsquery && 'cat'::tsquery && '' ::tsquery as result;"
db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_499" value="select !!
'cat'::tsquery as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_500" value="select
'fat:ab'::tsquery || 'fa:ab'::tsquery as result;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_501" value="select
'rat'::tsquery && 'cat'::tsquery && ',' ::tsquery as result;"
db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_503" value="select
to_char(interval '2' year ,'yyyy','yyyy');" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_504" value="select
to_char(interval 2 year);" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_505" value="select
to_char(current_timestamp, 0x5d);" db-types="openGauss" />