You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by "FlyingZC (via GitHub)" <gi...@apache.org> on 2023/08/02 09:27:05 UTC
[GitHub] [shardingsphere] FlyingZC opened a new issue, #27779: Support parsing openGauss SELECT sql
FlyingZC opened a new issue, #27779:
URL: https://github.com/apache/shardingsphere/issues/27779
# Background
Hi community,
ShardingSphere parser engine helps users parse a SQL to get the AST (Abstract Syntax Tree) and visit this tree to get SQLStatement (Java Object). Currently, we are planning to enhance the support for openGauss SQL parsing in ShardingSphere.
More details:
https://shardingsphere.apache.org/document/current/en/reference/sharding/parse/
# Task
This issue is to support more openGauss sql parse, as follows:
```sql
SELECT elem_contained_by_range('2', numrange(1.1,2.2));
```
```sql
exec_command_sync(command, timeout)
功能:该方法用于在主机上执行shell命令。
参数列表:
command 必选,数据类型可以是str, 以及元素为str类型的list或tuple;
```
```sql
opengauss=# -- 创建触发器表和触发器函数
opengauss=# CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT);
CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS $$ DECLARE BEGIN INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3); RETURN NEW; END $$ LANGUAGE PLPGSQL;
-- 创建触发器
CREATE TRIGGER insert_trigger BEFORE INSERT ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_insert_func();
-- 查看信息
show triggers;
CREATE TABLE
opengauss=# CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT);
CREATE TABLE
opengauss=# CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS $$ DECLARE BEGIN INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3); RETURN NEW; END $$ LANGUAGE PLPGSQL;
CREATE FUNCTION
opengauss=# -- 创建触发器
opengauss=# CREATE TRIGGER insert_trigger BEFORE INSERT ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_insert_func();
CREATE TRIGGER
opengauss=# -- 查看信息
opengauss=# show triggers;
```
```sql
set logging_module='on(SSL)';
SET
```
```sql
declare
openGauss-# type nest is table of int;
openGauss-# a nest := nest(1,2);
openGauss-# b nest := nest(1,2);
openGauss-# flag bool;
openGauss-# begin
openGauss$# flag := a = b;
openGauss$# raise info '%', flag;
openGauss$# end;
```
# Process
1. First confirm that this is a correct openGauss sql syntax, if not please leave a message under the issue and ignore it;
2. Compare SQL definitions in Official SQL Doc and ShardingSphere SQL Doc;
3. If there is any difference in ShardingSphere SQL Doc, please correct them by referring to the Official SQL Doc;
4. Run mvn install the current_file_module;
5. Check whether there are any exceptions. If indeed, please fix them. (Especially xxxVisitor.class);
6. Add new corresponding SQL case in SQL Cases and expected parsed result in Expected Statement XML;
7. Run SQLParserParameterizedTest to make sure no exceptions.
# Relevant Skills
1. Master JAVA language
2. Have a basic understanding of Antlr `g4` file
3. Be familiar with openGauss SQLs
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [shardingsphere] FlyingZC closed issue #27779: Support parsing openGauss SELECT sql
Posted by "FlyingZC (via GitHub)" <gi...@apache.org>.
FlyingZC closed issue #27779: Support parsing openGauss SELECT sql
URL: https://github.com/apache/shardingsphere/issues/27779
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org