添加GUC参数vb_casesensitive,设置数据库的大小写敏感。
如为on,则大小写敏感,则与现行数据库实现一致,加双引号大小写敏感,不加双引号默认小写大小写不敏感;如为off,大小写不敏感,即不管是否使用双引号,均视为小写

  • guc参数设置
    guc相关参数在guc.cpp中初始化,调用InitializeGUCOptions函数。其中bool类型的参数在InitConfigureNamesBool中初始化。
    添加参数vb_casesensitive
// 在InitConfigureNamesBool函数,将参数加入到数组localConfigureNamesBool中
{{"vb_casesensitive",PGC_USERSET,  // 参数可被所有用户修改QUERY_TUNING,gettext_noop("case sensitive."),NULL},&u_sess->attr.attr_common.casesensitive,  // 绑定knl_session_attr_common的casesensitive成员false,  // 默认值为falseNULL,NULL,NULL}// 由于绑定的knl_session_attr_common的casesensitive成员,需要在knl_session_attr_common中增加该成员
bool casesensitive;

-- 语法解析中处理大小写
按需求,只要vb_casesensitive为off时,将对象名处理为小写。sql语句的执行需要先进行词法语法解析,可以在解析过程中去处理大小写。
gram.y中,名称如字段名表名等,都在ColId分支,type_function_name分支处理type,function的名称。在这两个分支中处理大小写。

// 在定义段增加函数定义
static char * dealwithCaseSensitive(char *name);// 在代码段定义处理大小写的函数
static char *
dealwithCaseSensitive(char *name) {if (name == NULL)return name;if (!u_sess->attr.attr_common.casesensitive) { // vb_casesensitive为off时,处理成小写int len = strlen(name);for (int i = 0; i < len; i++) {char ch = name[i];if (ch >= 'A' && ch <= 'Z') {ch += 'a' - 'A';}name[i] = ch;}}return name;
}// 在规则段增加处理
ColId:      IDENT                                   { $$ = dealwithCaseSensitive(pstrdup($1)); }| unreserved_keyword                    { $$ = dealwithCaseSensitive(pstrdup($1)); }| col_name_keyword                      { $$ = dealwithCaseSensitive(pstrdup($1)); };/* Type/function identifier --- names that can be type or function names.*/
type_function_name: IDENT                           { $$ = dealwithCaseSensitive(pstrdup($1)); }| unreserved_keyword                    { $$ = dealwithCaseSensitive(pstrdup($1)); }| type_func_name_keyword                { $$ = dealwithCaseSensitive(pstrdup($1)); };

重新编译后,启动数据库,进入gsql命令行

postgres=# show vb_casesensitive;vb_casesensitive
------------------------off
(1 row)postgres=# \d a
Did not find any relation named "a".
postgres=# create table "A"("ID" int);
CREATE TABLE
postgres=# \d aTable "public.a"Column |  Type   | Modifiers
--------+---------+-----------id     | integer |         postgres=# 

向插件中添加guc参数相关推荐

  1. 如何在 Cell 组件/插件中添加下拉树形控件

    引言 用友华表Cell控件在提供强大的报表功能的同时,在关键细节也是十分突出,为开发者进一步缩短开发周期和最终用 户的完美需求提供了有效有利的平台.下面的例子提供了VB语言对实现美观实用的下拉树形控件 ...

  2. ParameterResolutionException单元测试方法中添加了参数,这是不允许的

    @Testvoid subStock(Integer specsId,Integer quantity){PhoneService.subStock(1,2);} 单元测试方法中添加了参数,这是不允许 ...

  3. 为了避免360等浏览器的页面缓存影响到系统的参数,可以在对应页面中添加随机参数。

    为了避免360等浏览器的页面缓存影响到系统的参数,可以在对应页面中添加随机参数. 如window.open('text.aspx?rid='+ Math.round(Math.random() * 1 ...

  4. android校正镜头的指令,适用于数款Android智能手机的CameraRaw插件中添加了镜头校正配置文件...

    些年来,智能手机相机已经取得了一些进步.创新,例如三重,四重,甚至五重/五重摄像头布置,智能手机摄像头的光学变焦,分辨率高达108MP,以及最重要的是价格实惠的高分辨率48MP和64MP相机传感器,使 ...

  5. http的get请求中的url中添加Object参数

    一直以来http的get请求中,都没有尝试带过复杂对象参数,最新在写grpc时, 使用了框架自动转化rpc请求到http请求,参数定义时没有注意复杂度,定义了个对象嵌套对象的请求参数,所以尝试了下载请 ...

  6. mybatis拦截器添加额外参数

    上一篇中讲了mybatis拦截器的实现 这一篇扩展mybatis在拦截器中添加额外参数 在mybatis的mapper.xml文件中,我们可以使用#{}或${}的方式获取到参数,这些参数都需要提前我们 ...

  7. PostgreSQL GUC 参数级别介绍

    想不想知道是什么 标签 PostgreSQL , 参数 , 参数级别 背景 在添加GUC参数时,需要注意你添加的参数属于什么类别的参数. 例如如果你想让普通用户能随时修改它,那么你需要将参数级别设置为 ...

  8. 表drop添加 purge参数

    问题描述 查询生产发现有很多临时表删除的drop操作,但实际没有完全删除,发现recyclebin中存在很多东西. 一直不做清理的话,会导致recycle bin一直在增大,对生产数据库性能有一定影响 ...

  9. CDR插件开发之CPG插件018 - 在CPG插件中调用外部EXE程序并传递参数

    在上篇文章中,讲解了CPG插件在VS2019中实现调试的具体方法.本文以具体代码为例,讲解在CPG插件中调用外部EXE程序,并传递运行参数的方法. 工程搭建准备 按照惯例,本篇文章的序号为018,请直 ...

最新文章

  1. 悬挑脚手架卸载钢丝绳要求_100m的悬挑脚手架技术交底
  2. Exchange Server 2010 全新部署篇八:CASHUB中集线器配置部分
  3. html 关键帧作标记,关键帧有什么用?
  4. 面试题:如何实现一个深拷贝
  5. bzoj1088[SCOI2005]扫雷Mine
  6. P4198 楼房重建 线段树 + 区间合并
  7. android app links,Android APP Links 配置
  8. 理想更新“货车并线预警”遭用户吐槽 李想:仍在优化
  9. 苹果本Win10双系统开启CPU虚拟化
  10. 如何搭建maven中,分布式工程
  11. GB28181之H264打包PS
  12. SharePoint Server 2010 LDAP Form 验证最容易出错的几点
  13. 假设检验 python_数据清洗、假设检验
  14. mysql创建视图语句_MySQL创建视图的语法格式
  15. windowsXP操作系统的基本功能
  16. (5)树莓派+1个USB有线网卡+1个USB无线网卡做路由器
  17. DDoS攻击类型和缓解手段
  18. 【年度总结】回顾2021,展望2022,老杨来了
  19. python之sys模块
  20. python相关专业-使用 Python 查找分类变量和连续变量之间的相关性

热门文章

  1. oim-server-web打包测试环境不起作用问题 vue+typeScript
  2. 手把手带你去搭建一套OpenStack云平台
  3. 可用计算机玩游戏,MONI玩 全球唯一可用电脑玩手游的平台
  4. 校园网自动拨号联网的方式
  5. minio下载安装与API操作
  6. Android 调用谷歌语音识别
  7. 2017春招百度实习生面试记录
  8. 如何使用条码标签软件的模板库
  9. 多IMU车载GNSS/INS数据集及介绍
  10. 如何安装husky_利用huskylint-staged构建代码检查工作流