登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
31
Star
32
Fork
224
openGauss
/
Plugin
代码
Issues
50
Pull Requests
1
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
dolphin插件 在创建表 和 触发器对应的函数中使用的的属性列名都大写,触发器执行过程报错找不到指定列
已验收
#I7TF09
缺陷
huyinghao
成员
创建于
2023-08-15 17:20
【标题描述】: dolphin插件 在创建表 和 触发器对应的函数中使用的的属性列名都大写,触发器执行过程报错找不到指定列 【测试类型:SQL功能】【测试版本:5.0.0】 问题描述 大小写问题导致函数执行失败 【操作系统和硬件信息】(查询命令: cat /etc/system-release, uname -a): 【测试环境】(单机/1主x备x级联备): 【被测功能】: PL & 触发器 【测试类型】: 【数据库版本】(查询命令: gaussdb -V): 【预置条件】:openGauss B类库,并加载 dolphin 插件 【操作步骤】(请填写详细的操作步骤): ``` CREATE OR REPLACE FUNCTION tri_update_LAST_TIME_func() RETURNS TRIGGER AS $$ DECLARE BEGIN NEW.LAST_TIME = CURRENT_TIMESTAMP; RETURN NEW; END; $$ LANGUAGE PLPGSQL; DROP TABLE IF EXISTS DCM_CONFIG_INFO; CREATE TABLE DCM_CONFIG_INFO ( CONFIG_ID varchar(256) NOT NULL, COLLECTOR_ID varchar(256), CONFIG_JSON TEXT, MONITOR_STATUS varchar(256), LAST_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (CONFIG_ID) ); DROP TRIGGER IF EXISTS trigger_DCM_CONFIG_INFO_update ON DCM_CONFIG_INFO ; CREATE TRIGGER trigger_DCM_CONFIG_INFO_update BEFORE UPDATE ON DCM_CONFIG_INFO FOR EACH ROW EXECUTE PROCEDURE tri_update_LAST_TIME_func(); insert into DCM_CONFIG_INFO(CONFIG_ID) values('33ee1117-405c-469e-a0bc-4c265748562a'); select * from DCM_CONFIG_INFO where CONFIG_ID = '33ee1117-405c-469e-a0bc-4c265748562a'; update DCM_CONFIG_INFO set LAST_TIME = '2023-08-14 02:38:49' where CONFIG_ID = '33ee1117-405c-469e-a0bc-4c265748562a'; update DCM_CONFIG_INFO set COLLECTOR_ID = 'worker-001' where CONFIG_ID = '33ee1117-405c-469e-a0bc-4c265748562a'; --更新报错 ERROR: record "new" has no field "last_time" in assignment. CONTEXT: PL/pgSQL function tri_update_last_time_func() line 3 at assignment ``` 【预期输出】: 【实际输出】: 【原因分析】: 1. dolphin 插件建表过程中默认不处理属性列名等标识符的大小写,原样存储;PL 中则默认将标识符转换为小写,导致在执行触发器对应的函数时,通过小写的列名查找大写的表的目标列失败 2. 目前尝试修改 scan.l:1363行,不处理 PL 标识符大小写,保持原样,但是因为 do_compile 中预先加入的“new/old”等变量也为小写导致失败。因此暂时将表的属性列修改为小写来避免该问题 【日志信息】(请附上日志文件、截图、coredump信息): 【测试代码】:
【标题描述】: dolphin插件 在创建表 和 触发器对应的函数中使用的的属性列名都大写,触发器执行过程报错找不到指定列 【测试类型:SQL功能】【测试版本:5.0.0】 问题描述 大小写问题导致函数执行失败 【操作系统和硬件信息】(查询命令: cat /etc/system-release, uname -a): 【测试环境】(单机/1主x备x级联备): 【被测功能】: PL & 触发器 【测试类型】: 【数据库版本】(查询命令: gaussdb -V): 【预置条件】:openGauss B类库,并加载 dolphin 插件 【操作步骤】(请填写详细的操作步骤): ``` CREATE OR REPLACE FUNCTION tri_update_LAST_TIME_func() RETURNS TRIGGER AS $$ DECLARE BEGIN NEW.LAST_TIME = CURRENT_TIMESTAMP; RETURN NEW; END; $$ LANGUAGE PLPGSQL; DROP TABLE IF EXISTS DCM_CONFIG_INFO; CREATE TABLE DCM_CONFIG_INFO ( CONFIG_ID varchar(256) NOT NULL, COLLECTOR_ID varchar(256), CONFIG_JSON TEXT, MONITOR_STATUS varchar(256), LAST_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (CONFIG_ID) ); DROP TRIGGER IF EXISTS trigger_DCM_CONFIG_INFO_update ON DCM_CONFIG_INFO ; CREATE TRIGGER trigger_DCM_CONFIG_INFO_update BEFORE UPDATE ON DCM_CONFIG_INFO FOR EACH ROW EXECUTE PROCEDURE tri_update_LAST_TIME_func(); insert into DCM_CONFIG_INFO(CONFIG_ID) values('33ee1117-405c-469e-a0bc-4c265748562a'); select * from DCM_CONFIG_INFO where CONFIG_ID = '33ee1117-405c-469e-a0bc-4c265748562a'; update DCM_CONFIG_INFO set LAST_TIME = '2023-08-14 02:38:49' where CONFIG_ID = '33ee1117-405c-469e-a0bc-4c265748562a'; update DCM_CONFIG_INFO set COLLECTOR_ID = 'worker-001' where CONFIG_ID = '33ee1117-405c-469e-a0bc-4c265748562a'; --更新报错 ERROR: record "new" has no field "last_time" in assignment. CONTEXT: PL/pgSQL function tri_update_last_time_func() line 3 at assignment ``` 【预期输出】: 【实际输出】: 【原因分析】: 1. dolphin 插件建表过程中默认不处理属性列名等标识符的大小写,原样存储;PL 中则默认将标识符转换为小写,导致在执行触发器对应的函数时,通过小写的列名查找大写的表的目标列失败 2. 目前尝试修改 scan.l:1363行,不处理 PL 标识符大小写,保持原样,但是因为 do_compile 中预先加入的“new/old”等变量也为小写导致失败。因此暂时将表的属性列修改为小写来避免该问题 【日志信息】(请附上日志文件、截图、coredump信息): 【测试代码】:
评论 (
4
)
登录
后才可以发表评论
状态
已验收
待办的
已确认
已答复
已取消
挂起
修复中
已完成
待回归
测试中
已验收
负责人
未设置
pengjiong
totaj
负责人
协作者
+负责人
+协作者
吴岳川
wuyuechuan
负责人
协作者
+负责人
+协作者
李秦朗
li-qinlang
负责人
协作者
+负责人
+协作者
标签
sig/plugin
未设置
项目
未立项任务
未立项任务
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
预计工期
(小时)
参与者(6)
1
https://gitee.com/opengauss/Plugin.git
git@gitee.com:opengauss/Plugin.git
opengauss
Plugin
Plugin
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册