merge show-events into 6.0.0

解决show events报语法错误的问题

Created-by: dodders
Commit-by: laishenghao
Merged-by: opengauss_bot
Description: 【标题】解决show events报语法错误的问题

【实现内容】:解决show events报语法错误的问题

【根因分析】: B库下interval为关键字,导致语法解析错误

【实现方案】:在B库下对interval增加反引号。

【关联需求或issue】:https://gitcode.com/opengauss/openGauss-server/issues/7008

【开发自验报告】:
1. 请附上自验结果(内容或者截图)
![e98be8762beba0a997bd2b354410730.png](https://raw.gitcode.com/user-images/assets/5089689/97424aa0-3fff-4da3-9b4d-d77b4e6338df/e98be8762beba0a997bd2b354410730.png 'e98be8762beba0a997bd2b354410730.png')
2. 是否可以添加fastcheck测试用例,如是,请补充fastcheck用例
是
3. 是否涉及资料修改,如是,在docs仓库补充资料
否
4. 是否考虑升级场景(系统表修改、日志持久化以及修改执行态数据格式)
不涉及
5. 是否考虑在线扩容等扩展场景
不涉及
6. 是否考虑异常场景/并发场景/前向兼容/性能场景
解决异常报错
7. 是否对其他模块产生影响
否

【其他说明】:NA

See merge request: opengauss/openGauss-server!7894
This commit is contained in:
opengauss_bot
2025-06-12 09:15:27 +08:00
5 changed files with 91 additions and 4 deletions

View File

@ -942,8 +942,14 @@ StmtResult *SearchEventInfo(ShowEventStmt *stmt)
StringInfoData buf;
initStringInfo(&buf);
appendStringInfo(&buf, "SELECT ");
appendStringInfo(&buf,
"job_name,nspname,log_user,priv_user,job_status,start_date,interval,end_date,enable,failure_msg ");
char* intervalColName;
if (u_sess->attr.attr_sql.dolphin) {
intervalColName = "`interval`";
} else {
intervalColName = "interval";
}
appendStringInfo(&buf, "job_name,nspname,log_user,priv_user,job_status,start_date,%s,end_date,enable,failure_msg ",
intervalColName);
appendStringInfo(&buf, "FROM PG_JOB ");
/* Concatenate where clause */

View File

@ -0,0 +1,56 @@
create database event_db dbcompatibility 'B';
\c event_db
create schema event_s;
set current_schema = event_s;
set dolphin.b_compatibility to on;
show events;
job_name | schema_name | log_user | priv_user | job_status | start_date | interval | end_date | enable | failure_msg
----------+-------------+----------+-----------+------------+------------+----------+----------+--------+-------------
(0 rows)
create user event_a sysadmin password 'event_123';
create definer=event_a event e1 on schedule at '2023-01-16 21:05:40' disable do select 1;
select job_name, nspname from pg_job where dbname='event_b';
job_name | nspname
----------+---------
(0 rows)
show events in a;
job_name | schema_name | log_user | priv_user | job_status | start_date | interval | end_date | enable | failure_msg
----------+-------------+----------+-----------+------------+------------+----------+----------+--------+-------------
(0 rows)
show events from a;
job_name | schema_name | log_user | priv_user | job_status | start_date | interval | end_date | enable | failure_msg
----------+-------------+----------+-----------+------------+------------+----------+----------+--------+-------------
(0 rows)
show events like 'e';
job_name | schema_name | log_user | priv_user | job_status | start_date | interval | end_date | enable | failure_msg
----------+-------------+----------+-----------+------------+------------+----------+----------+--------+-------------
(0 rows)
show events like 'e%';
--?.*
--?.*
--?.*
(1 row)
show events like 'e_';
--?.*
--?.*
--?.*
(1 row)
show events where job_name='e1';
--?.*
--?.*
--?.*
(1 row)
drop event if exists e1;
drop user if exists event_a;
reset current_schema;
drop schema event_s;
\c postgres
drop database if exists event_db;

View File

@ -1105,7 +1105,7 @@ test: optimizing_index_scan_ustore
test: row_count_function
# test for inherit table
test: inherits01
test: inherits01 show_events
# show_warnings
test: show_warnings prevent_table_in_sys_schema create_tbl_init_td_check

View File

@ -417,7 +417,7 @@ test: partiton_pathkey_col_plan partiton_pathkey_col_randomexec partiton_pathkey
#test: create_function_1
test: create_table create_table_2 create_table_3
test: temp__4 obsscaninfo
test: create_seg_table
test: create_seg_table show_events
#test: copy#

View File

@ -0,0 +1,25 @@
create database event_db dbcompatibility 'B';
\c event_db
create schema event_s;
set current_schema = event_s;
set dolphin.b_compatibility to on;
show events;
create user event_a sysadmin password 'event_123';
create definer=event_a event e1 on schedule at '2023-01-16 21:05:40' disable do select 1;
select job_name, nspname from pg_job where dbname='event_b';
show events in a;
show events from a;
show events like 'e';
show events like 'e%';
show events like 'e_';
show events where job_name='e1';
drop event if exists e1;
drop user if exists event_a;
reset current_schema;
drop schema event_s;
\c postgres
drop database if exists event_db;