签到成功

知道了

CNDBA社区CNDBA社区

openGauss gsql 工具 启用 自动补齐 和 历史命令记录功能

2023-04-10 23:16 1699 0 原创 openGauss
作者: dave

直接使用gsql 连接DB时,gsql 是没有命令自动补齐和历史命令记录功能的,这里的历史命令记录简单的说,就是不能使用上下键来查看之前的SQL,所以使用起来有些不方便:

http://www.cndba.cn/cndba/dave/article/116534
http://www.cndba.cn/cndba/dave/article/116534

[dave@www.cndba.cn ~]$ gsql -d postgres -p 15500 
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:07:56 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# /q

幸好gsql 提供了该功能的开关:-r。 开启在客户端操作中可以进行编辑的模式。在使用gsql 连接DB时,加上改选项,即可实现gsql的命令自动补齐和历史命令记录。

命令帮助对-r的解释是指定时,使用libedit:

http://www.cndba.cn/cndba/dave/article/116534

[dave@www.cndba.cn ~]$ gsql --help
gsql is the openGauss interactive terminal.

Usage:
  gsql [OPTION]... [DBNAME [USERNAME]]
……
 -r                       if this parameter is set,use libedit
……

1 自动补齐功能

编写SQL时,按TAB 键,例如,crea 后键入 Tab,gsql 会将其补齐为 create。http://www.cndba.cn/cndba/dave/article/116534

openGauss=# select * from pg_se
pg_seclabel         pg_seclabels        pg_session_iostat   pg_session_wlmstat  pg_set              pg_settings         
openGauss=#

说明:

1.支持数据库SQL关键字如select、create、table等。
2.支持表名、视图名等自定义标识符的补齐。
3.元命令选项’S’、’+’不支持自动补齐。
4.对表进行补齐时,只有前缀是“pg_”才会补齐系统表。
5.不支持建表时字段类型的补齐。
6.select后不支持任何补齐。
7.不支持常量与宏的自动补齐。
8.select * from a,b… 不支持第二个开始表的自动补齐, insert into t1 (col1, col2, …) 不支持第二个列的自动补齐。
9.不支持create tablespace语句with以及with后参数的自动补齐。
10.创建索引不支持local、global的自动补齐,修改索引不支持rebuild自动补齐。
11.set语句仅支持自动补全USER和SUPERUSER级别的参数。
12.不支持if exists的自动补齐。
13.不支持表名.列名的自动补齐,如alter sequence owned by tableName.colName,owned by。
14.不支持自定义操作符自动补齐。使用复制粘贴这种方式输入命令,如果粘贴的命令里面有TAB键有可能会使输入命令的格式错乱,无法正常执行。
http://www.cndba.cn/cndba/dave/article/116534

2历史SQL 记录功能

其实历史命令记录有2个层面,我们这里讲的是gsql的内部变量。

2.1 系统层面的历史命令(外部变量)

官网的建议是为了避免指令历史记录安全隐患,关闭各主机系统层面的history指令。http://www.cndba.cn/cndba/dave/article/116534

方法是在/etc/profile文件中指定HISTSIZE=0。

注意该参数在系统中默认值为1000:

http://www.cndba.cn/cndba/dave/article/116534

[dave@www.cndba.cn ~]$ echo $HISTSIZE
1000
[dave@www.cndba.cn ~]$

2.2 gsql 客户端中的历史命令(内部变量)

客户端操作历史记录条数默认设置为32条,最多支持记录500条。当客户端交互式输入包含中文字符时,只支持UTF-8 的编码环境。 可以通过set HISTSIZE 来修改。

出于安全考虑,将包含PASSWORD、IDENTIFIED敏感词的记录识别为敏感信息,不会记录到历史信息中,即不能通过上下翻回显。http://www.cndba.cn/cndba/dave/article/116534

关于set在gsql 的命令中有说明:http://www.cndba.cn/cndba/dave/article/116534

[dave@www.cndba.cn ~]$ gsql -d postgres -p 15500 -r
gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:07:56 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# /?
……
Variables
  /prompt [TEXT] NAME    prompt user to set internal variable
  /set [NAME [VALUE]]    set internal variable, or list all if no parameters
  /unset NAME            unset (delete) internal variable
……

/set 不加参数,表示显示当前所有的内部变量:

http://www.cndba.cn/cndba/dave/article/116534

openGauss=# /set
AUTOCOMMIT = 'on'
PROMPT1 = '%o%R%# '
PROMPT2 = '%o%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
VERSION = '(openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:07:56 commit 0 last mr   on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit'
DBNAME = 'postgres'
USER = 'omm'
HOST = '/data/openGauss/tmp'
PORT = '15500'
ENCODING = 'UTF8'
openGauss=# 

openGauss=# /set HISTSIZE 600
warning:"HISTSIZE" is set to 500,because its value can not be greater than 500

openGauss=# /set HISTSIZE 500
openGauss=# /set
AUTOCOMMIT = 'on'
PROMPT1 = '%o%R%# '
PROMPT2 = '%o%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
VERSION = '(openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:07:56 commit 0 last mr   on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit'
DBNAME = 'postgres'
USER = 'omm'
HOST = '/data/openGauss/tmp'
PORT = '15500'
ENCODING = 'UTF8'
HISTSIZE = '500'
openGauss=#

如果将记录历史的条数设置为 50,/set HISTSIZE 0,则不记录历史命令。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2283
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8183636次
  • 积分:4428
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ