已关闭
[Bug]: ogsql Tab 补全能力边界待确认(索引名/INSERT列/部分关键字等) #289
wuchenlong创建于  7月27日关闭于  27 天前
wuchenlong
wuchenlong成员
7月27日 创建

测试类型

工具功能

测试版本

7.0.0-LTS

操作系统和硬件信息

openEuler 20.03 aarch64

测试环境

oGRAC双节点

被测功能

ogsql Readline Tab 自动补全(文档未明确标注支持边界的能力缺口汇总)

预置条件

oGRAC 双节点 ONLINE;Linux 真实 TTY 启动 ogsql / as sysdba;已预置业务对象(如 mtx_t1/mtx_idx1、rl_emp/rl_dept、rl_seq_a 等)。本单用于汇总「官方补全说明/需求未明确写支持或不支持,但实测未按期望补全」的条目,供产品确认是否纳入能力范围,不作为已确认缺陷结论

操作步骤

以下每条均在 SQL> 输入对应前缀后按一次 Tab(勿先 Enter)。环境:20.20.20.104,oGRAC Release 7.0.0-RC3 e69c39a

# U1 ALTER/DROP INDEX 后索引名
alter index mtx_i
drop index mtx_i

# U2 INSERT 列清单
insert into rl_emp (emp_
insert into rl_emp (emp_id, emp_

# U3 部分 SQL 语句关键字前缀
fla
alter sy
alter index mtx_idx1 reb

# U4 schema. 空前缀
select * from SYS.

# U5 SELECT 表达式下序列名前缀
select rl_seq

# U6 CREATE 后短前缀候选污染
create g

预期输出

若产品确认纳入能力范围,则期望大致为:

U1 补出 mtx_idx1(或候选含该索引名)
U2 补出 emp_* 列(对照:update rl_emp set emp_ 当前可补)
U3 分别出现 flashback / system / rebuild
U4 schema. 空前缀候选中可见当前 schema 下业务表(如 mtx_t1);若因 LIMIT/排序截断需文档说明
U5 在序列语境下可补 rl_seq_a(或文档明确仅 DROP/ALTER SEQUENCE 才查序列)
U6 CREATE 后候选应偏 DDL 第二段词(如 global),不宜混入 grant/GREATEST

对照文档:ogsql_instructions.md 明确对象类型为表/视图/列/过程/函数/序列;需求设计表上下文为 TABLE/COLUMN/PROCEDURE/SEQUENCE,未写 INDEX 对象、未写 INSERT(列清单)、未逐条点名 FLASHBACK/ALTER SYSTEM/REBUILD

实际输出

U1 alter/drop index mtx_i + Tab → 无补全、无有效候选(行不变)
U2 insert into rl_emp (emp_ + Tab → 无候选;第二列同样无候选
   对照 update rl_emp set emp_ + Tab → 有 EMP_* 列表
U3 fla + Tab → 无动作
   alter sy + Tab → 有候选但不含 system
   … reb + Tab → 无动作(同句 … ren 可补 rename)
U4 select * from SYS. + Tab → 有大量 SYS_* 候选,未见业务表 mtx_t1(可能 LIMIT/排序)
U5 select rl_seq + Tab → 无变化(rl_seq_a 已存在;DROP SEQUENCE 语境可补)
U6 create g + Tab → 候选含 grant / group / global / GREATEST 等,行仍为 create g

日志信息

判定依据:官方 ogsql_instructions.md「自动补全」与需求设计中的上下文表,对上述条目未明确写「支持」或「不支持」。SQL 参考手册虽有对应语句(如 ALTER INDEX、FLASHBACK TABLE、ALTER SYSTEM),但不等于补全能力承诺。请产品逐条确认:纳入范围 / 明确不支持 / 文档补充。

提单组织

测试团队

likedislike
wuchenlongwuchenlong成员
7月27日 添加了label:bug
opengauss_bot
opengauss_bot成员
7月27日 评论:

This issue requires an assignee. Since you haven't specified one, we've assigned TestManager as the default assignee for this issue.

likedislike
opengauss_botopengauss_bot成员
7月27日 将 TestManager 设为负责人
opengauss_botopengauss_bot成员
7月27日 添加了label:sig/StorageEngine
opengauss_bot
opengauss_bot成员
7月27日 评论:

Welcome To openGauss Community

Hey @wuchenlong , thanks for your contribution to the community.

Bot Usage Manual

I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands.

Contact Guide

If you have any questions, please contact the SIG: StorageEngine ,
and any of the maintainers: @CarrotGo, @chendong76, @chenxiaobin19, @congzhou2603, @dodders, @hwworkholic, @jemappellehc, @muyulinzhong, @quemingjian, @shenzheng4, @shirley_zhengx, @superlchf, @totaj, @wlff234, @wofanzheng, @ywzq1161327784 ,
and any of the committers: @CityYard, @libiao2024, @lijieac, @theothersideofsea, @wang_bowen, @weithu, @xiong_xjun, @yuanyazhi, @zhangzq131 .

likedislike
wuchenlong
wuchenlong成员
7月27日 评论:

补充手工测试(用户 2026-07-27)

以下与 #289「能力边界待确认」同类,请一并评估是否纳入补全范围。

输入 + Tab ogsql 实测 gsql 实测(LTS 15600 -r
INSERT 第二列空前缀 insert into t(c1, 不补业务列;或系统对象噪声 无 c2/c3 列候选(ALIGN)
INSERT 第二列短前缀 insert into t(c1, c 无 c2/c3 无动作
INSERT 列前缀 insert into test1(na 用户:不补;部分环境可补 name
CREATE INDEX 表名 create index idx on 不补 test1
CREATE INDEX global create index … on t(c1) gl 误补 global_tran_id 等,无 GLOBAL 关键字 不补(ALIGN)
ALTER INDEX 表名 alter index idx on t 不补表名(oGRAC 语法亦不支持 ON 子句)
GRANT resource grant res 不补 resource

建议:INSERT 列清单、INDEX 后表名/global 与 U1/U2 同源;若确认不做请写入 ogsql_instructions.md(参见 #293)。

相关新单:#295(CREATE TABLE 类型词)、#298(identified/resource)。

likedislike
wuchenlongwuchenlong成员
7月27日 修改了issue 的描述
此处折叠了8条事件消息 查看更多
leweiyangleweiyang成员
8月21日 关联了pull request:完善 SQL 对象上下文、类型及函数补全(#289、#290、#295、#299、#301)
leweiyang
leweiyang成员
8月24日 评论:

已修复可以补齐

image.png

-- 创建测试表 rl_emp
CREATE TABLE rl_emp (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(50),
emp_dept_id INT,
emp_salary DECIMAL(10,2)
);

-- 创建测试表 rl_dept
CREATE TABLE rl_dept (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(50)
);

-- 创建测试表 mtx_t1
CREATE TABLE mtx_t1 (
id INT PRIMARY KEY,
name VARCHAR(50)
);

-- 为 mtx_t1 创建索引 mtx_idx1(issue 中提到的索引名)
CREATE INDEX mtx_idx1 ON mtx_t1(name);

-- 创建序列 rl_seq_a
CREATE SEQUENCE rl_seq_a START WITH 1 INCREMENT BY 1;

-- 插入一些数据(可选,让对象更真实)
INSERT INTO rl_emp VALUES (1, 'Alice', 10, 5000);
INSERT INTO rl_emp VALUES (2, 'Bob', 20, 6000);
INSERT INTO rl_dept VALUES (10, 'HR');
INSERT INTO rl_dept VALUES (20, 'IT');
COMMIT;

-- 测试 1a:输入以下前缀后按 Tab
alter index mtx_i
image.png

-- 测试 1b:输入以下前缀后按 Tab
drop index mtx_i
image.png

-- 测试 2a:输入以下前缀后按 Tab
insert into rl_emp (emp_
image.png

-- 测试 2b:输入以下前缀后按 Tab(多列场景)
insert into rl_emp (emp_id, emp_
image.png

-- 测试 3a:FLASHBACK 关键字
fla
image.png

-- 测试 3b:ALTER SYSTEM 关键字
alter sy
image.png

-- 测试 3c:REBUILD 关键字(在 ALTER INDEX ... REBUILD 语境下)
alter index mtx_idx1 reb
image.png

-- 测试 4:输入以下前缀后按 Tab
select * from SYS.
image.png

-- 测试 5:输入以下前缀后按 Tab
select rl_seq
image.png

-- 测试 6:输入以下前缀后按 Tab
create g
image.png

截断等能力边界内容在文档中进行了补充
image.png

likedislike
leweiyangleweiyang成员
28 天前 issue状态由 待办的 改变为 待回归
wuchenlong
wuchenlong成员
27 天前 评论:

回归版本:oGRAC Release 7.0.0-RC3 18ce0a2 build 2026-08-26 09:48:01
回归环境:oGRAC 双节点(20.20.20.104 / 20.20.20.106),db=ONLINE,节点 20.20.20.104 执行
结论:通过(索引名、INSERT 列、flashback/system/rebuild、CREATE GLOBAL 均能按语境补全)

回归步骤ogsql / as sysdba,Linux TTY)

SQL> alter index mtx_i<Tab>          -- mtx_idx1
SQL> drop index mtx_i<Tab>           -- mtx_idx1
SQL> insert into rl_emp (emp_<Tab>   -- 列候选含 emp_id
SQL> insert into mtx_t1 (id, na<Tab> -- name
SQL> fla<Tab>                        -- flashback
SQL> alter sy<Tab>                   -- alter system
SQL> alter index mtx_idx1 reb<Tab>   -- rebuild
SQL> create g<Tab>                   -- 含 global,未见 grant 污染

实际输出
上述锚点均按预期补全或列出目标词。pty 自动化断言通过。

likedislike
wuchenlongwuchenlong成员
27 天前 issue状态由 待回归 改变为 已验收
wuchenlongwuchenlong成员
27 天前 关闭了 issue