已关闭
[资料]: ogsql 自动补全文档缺少能力边界/负向说明(请补充 ogsql_instructions) #293
wuchenlong创建于  7月27日关闭于  8月27日
wuchenlong
wuchenlong成员
7月27日 创建

测试类型

资料
工具功能

测试版本

7.0.0-LTS

操作系统和硬件信息

openEuler 20.03 aarch64

测试环境

oGRAC双节点

被测功能

ogsql 交互式行编辑 / 自动补全 — 产品文档能力边界补充

预置条件

oGRAC 双节点 ONLINE;TTY 交互 ogsql / as sysdba。对照文档:oGRAC-docs ogsql_instructions.md「自动补全」章节(当前仅 5 条正向说明,无「支持边界 / 不支持」清单)。本单为资料补充请求,非功能缺陷结论。

操作步骤

请在 ogsql_instructions.md「自动补全」中补充下列实测能力边界(2026-07-27,oGRAC 7.0.0-RC3 e69c39a)。每条均可在 SQL> 下按一次或两次 Tab 复核。

# D1 短前缀 SQL 关键字(文档写「补全 SQL 关键字」,建议补一句示例)
S

# D2 多表 FROM:第二表有前缀时可补(文档仅写 FROM 上下文,未写多表)
-- 预置 rl_gsql_t1 / rl_gsql_t2
select * from rl_gsql_t1, rl_gsql_t

# D3 多表 FROM:第二表空前缀当前无动作(建议写明)
select * from rl_gsql_t1, 

# D4 INSERT 列清单:空前缀 / 短前缀当前不补业务列(文档未写 INSERT 列补全范围)
insert into rl_gsql_t1(c1, 
insert into rl_gsql_t1(c1, c

# D5 CREATE TABLE 字段类型位不补(文档未写负向)
create table t1(id 

# D6 CREATE INDEX local/global:当前未见正确 DDL 关键字补全(lo/gl 易混入系统列或误补)
create index idx1 on rl_gsql_t1(c1) lo
create index idx1 on rl_gsql_t1(c1) gl

# D7 ALTER INDEX rebuild 当前不补
alter index rl_gsql_idx1 reb

# D8 IF EXISTS 当前不补 exists
drop table if
drop table if 

# D9 纯数字不按常量补全
123

# D10 CREATE TABLESPACE 后 wi:可能出现 with/window 关键字列表,
#     不等于支持 CREATE TABLESPACE WITH 子句(oGRAC 语法亦无 WITH)
create tablespace ts1 datafile './ts1.dbf' size 32m wi

对照:openGauss gsql.md 对上述多数场景有「不支持」明文;ogsql 手册目前缺失对等说明,测试与用户只能猜测。

预期输出

请在 ogsql 产品文档「自动补全」补充:

  1. 明确支持:如短前缀关键字;FROM/JOIN 多表场景下后续表名前缀补全(若产品确认 D2 为有意能力)。
  2. 明确不支持 / 当前不做:字段类型、IF EXISTS、rebuild、纯数字常量、INSERT 列清单(若确认不做)、INDEX local/global(若确认不做)等。
  3. 易误解点:关键字扫描可能列出 with/window,不代表对应 DDL 子句可用。
  4. 与 gsql 行为差异处用一两句标出即可,避免测试/用户按 gsql 负向清单误判 ogsql。

实际输出

当前 ogsql_instructions.md「自动补全」仅有:
- 补全 SQL 关键字、交互式命令、内置函数
- 按 FROM/JOIN/SELECT/CALL 等补全表/视图/列/过程/函数/序列
- 支持 schema.
- 唯一候选直接补 / 多候选公共前缀或列表
- 动态查询失败回退静态关键字

未写:多表第二表、INSERT 列清单、类型/IF EXISTS/rebuild/local|global、
空前缀行为、与 gsql 负向清单的差异说明。

实测摘要(ogsql):
D1 S → 候选含 select/set/…
D2 …, rl_gsql_t → 可补 rl_gsql_t2
D3 …, 空前缀 → 无动作
D4 INSERT 第二列 → 不补业务列(空前缀有系统对象噪声)
D5 类型位 → 不补
D6 lo/gl → 无正确 LOCAL/GLOBAL;gl 曾误补 global_tran_id
D7 rebuild → 无动作
D8 if exists → 无 exists
D9 123 → 无动作
D10 wi → 列表含 with/window

日志信息

提单组织

测试团队

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日 评论:

ogsql vs gsql 负向对照实测(L-GSQL-02 / Case0033)

  • 日期:2026-07-27
  • ogsql:oGRAC 20.20.20.104,ogsql / as sysdba(7.0.0-RC3 e69c39a)
  • gsql:openGauss LTS wcl0623 端口 15600,gsql -r(7.0.0-RC3 48ebd016)
  • 文档基准:gsql gsql.md「命令自动补齐」不支持清单;ogsql ogsql_instructions.md「自动补全」
  • 原始数据:test_design/ogsql-readline-design-chain-v2/pty_auto/results/gsql_neg_probe.json
  • 脚本:pty_auto/run_gsql_neg_probe.py(人工复核剔除 banner/系统列噪声)

对照总表(复核后)

# 场景(输入 + Tab) gsql 手册 ogsql 实测 gsql 实测 复核结论
1 行首 S 写「元命令选项 S 不补」 出 SQL 关键字列表(select/set/…) 同样出 SELECT/SET/… DOC_AMBIG:手册指 \d[S+] 的选项,不是行首 SQL 关键字 S
2 行首 + 同上 无动作 无动作 BOTH_OK
3 create table t(id␠ 类型位 不补字段类型 不补类型 不补类型 BOTH_OK / ALIGN
4 insert into t(c1,␠ 第二列空前缀 不补第二列 刷出大量系统对象(非表列 c2/c3) 无有效列候选 ogsql NOISE;gsql ALIGN
4b insert … (c1, c 不补第二列 候选为 clear/col/column/conn,无 c2/c3 无动作 ALIGN(未补表列)
5 select * from t1,␠ 第二表空前缀 不补第二表 无动作 无动作 BOTH_OK
5b select * from t1, rl_gsql_t 不补第二表 能补 rl_gsql_t2 不补 MATCH_DIFF(ogsql 更强)
6 create tablespace … wi 不补 WITH/参数 候选含 with/window(关键字) 不补 gsql ALIGN;ogsql NOISE/弱 DIFF
7 create index … lo / gl 不补 local/global lo→系统列噪声;gl→误补 global_tran_id 无动作 gsql ALIGN;ogsql NOISE
8 alter index … reb 不补 rebuild 无动作 无动作 BOTH_OK / ALIGN
9 drop table if / if␠ 不补 if exists 不出现 exists if␠ 后出现 CASCADE/RESTRICT,仍无 exists ALIGN
10 … owned by t. / where t. 不补表.列 where t. 无动作 干净屏下未见列候选 BOTH_OK
11 create operato 不补自定义操作符 无动作 补成关键字 create operator DOC_AMBIG
12 纯数字 123 不补常量/宏 无动作 无动作 BOTH_OK

结论标记说明

标记 含义
ALIGN 与 gsql 手册「不补」意图一致
DOC_AMBIG 手册措辞易误解;行为本身合理
MATCH_DIFF ogsql 比 gsql 强(会补),需在 ogsql 文档写清
NOISE 未补到正确目标,但刷出无关候选/误补
BOTH_OK 两边都不补目标,符合负向预期

请开发确认

  1. 文档补充:MATCH_DIFF 项(如 5b 多表第二表有前缀)是否在 ogsql_instructions.md 写明支持?
  2. 文档补充:负向/边界(类型位、IF EXISTS、rebuild、INSERT 列、INDEX local/global 等)是否补充「不支持」说明?
  3. 与 gsql 差异:冲突以 ogsql 功能文档为准;gsql 负向清单仅作对照,不直接当 ogsql 缺陷。
  4. 噪声/误补:C1 INSERT 空前缀、C2 INDEX lo/gl 等与 #288/#289/#290 同源,本单聚焦文档边界。

完整报告:test_design/ogsql-readline-design-chain-v2/pty_auto/results/GSQL_NEG_COMPARE.md

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

补充:256 候选截断与排序(用户手工 #20)

实测创建 257 张 kw_cap_* 表后,select * from kw_c + Tab 仅展示 256 个候选,无稳定排序(缺失项随系统视图返回顺序变化,如 KW_CAP_002 可能不在列表中)。

自动化证据:pty_auto/results/cap256_EVIDENCE.md、run_cap256_probe.py。

请在 ogsql_instructions.md 明确:

  1. 客户端上限 256(OGSQL_MAX_COMPLETION_MATCHES)
  2. 不保证排序;截断后缺失哪些候选非缺陷

需求文档 §5.2 已有实现说明,产品手册需对齐。

likedislike
wuchenlongwuchenlong成员
7月27日 关联了看板:临时看板
此处折叠了6条事件消息 查看更多
leweiyangleweiyang成员
8月21日 关联了pull request:修复文档中对readline能力边界和 DATA_BUFFER_SIZE 生效条件的介绍 #293 #306
leweiyang
leweiyang成员
8月24日 评论:

已在文档中增加相关介绍
image.png

likedislike
leweiyangleweiyang成员
8月26日 issue状态由 待办的 改变为 待回归
wuchenlong
wuchenlong成员
8月27日 评论:

文档已验收

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

回归版本:oGRAC Release 7.0.0-RC3 18ce0a2 build 2026-08-26 09:48:01
回归环境:对照本地官方文档仓 oGRAC-docs(已 sync,章节提交 ebc6ad6 2026-08-24 docs: align ogsql readline and DATA_BUFFER_SIZE documentation)
结论:通过(ogsql_instructions.md「自动补全」已补充支持范围、负向边界、与其他客户端不可互推的说明)

依据:oGRAC-docs docs/zh/tool_and_commandreference/client_tool/ogsql_instructions.md 节「自动补全」。

对照本单当初 D1–D10:

项 当初诉求 当前文档
D1 短前缀关键字 写明支持 已写:SQL 关键字位置;普通关键字至少 1 个前缀字符
D2 多表 FROM 有前缀 写明支持 已写:FROM 中逗号分隔的后续表同样支持补全
D3 多表第二表空前缀 写明行为 已写:明确对象位置支持尚未输入前缀时列出候选
D4 INSERT 列清单 写明范围 已写为支持:仅补全 INSERT 目标表的列(功能侧已修)
D5 CREATE TABLE 类型位 写明负向或能力 已写为支持:TEXT / UNSIGNED / AUTO_INCREMENT(功能侧已修)
D6 INDEX local/global 写明边界 已写:可作为通用关键字出现,但不校验 CREATE INDEX 位置是否合法
D7 ALTER INDEX rebuild 写明 已写为支持按前缀补 REBUILD(功能侧已修)
D8 IF EXISTS 写明不支持 已写:当前不提供 IF EXISTS 短语级补全
D9 纯数字 写明不支持 已写:不把纯数字扩展为常量候选
D10 tablespace WITH 关键字列表≠语法支持 已写:候选中出现关键字不表示该位置语法合法

另已覆盖本单预期的:与其他客户端(含 gsql)能力不可互推;多行按完整逻辑输入判断上下文;bracketed paste 中的 Tab 不当补全键。

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