当前位置: 首页 > wzjs >正文

门户手机网站开发重庆网捷网站建设技术有限公司

门户手机网站开发,重庆网捷网站建设技术有限公司,wordpress 动漫 主题下载地址,怎么做示爱的网站文章目录 0.简介1.概念说明2.tag的生成和存储2.1 tag合法性校验2.2 内存中存储2.3 持久化存储 3.tag的触发 0.简介 在上一篇文章中中,我们介绍了PG中的两种触发器,即适合于DML的普通触发器和对于DDL的事件触发器,其中事件触发器与常规的 DML…

文章目录

    • 0.简介
    • 1.概念说明
    • 2.tag的生成和存储
      • 2.1 tag合法性校验
      • 2.2 内存中存储
      • 2.3 持久化存储
    • 3.tag的触发

0.简介

在上一篇文章中中,我们介绍了PG中的两种触发器,即适合于DML的普通触发器和对于DDL的事件触发器,其中事件触发器与常规的 DML 触发器(响应行级别或语句级别操作)不同的地方在于事件触发器在 DDL 操作的生命周期中触发,触发时执行用户指定的存储过程或函数,可以用于监控或限制数据库结构的变更。 本文对于事件触发器中细节进行进一步的说明,也就是tag的原理。

1.概念说明

在上一篇文章中说明了创建事件触发器的语法,其中可以使用filter_variable指定触发事件过滤器的条件,也就是tag,其基本作用是实现对于ddl细分类型的精准触发,比如在建表时触发可以带上如下内容:
WHEN TAG IN (‘CREATE TABLE’)

2.tag的生成和存储

2.1 tag合法性校验

在创建事件触发器中的语法可以看到其tag是以字符串形式存在的,那么就需要验证其是否合法,其验证函数如下:

/** Validate DDL command tags.*/
static void
validate_ddl_tags(const char *filtervar, List *taglist)
{ListCell   *lc;foreach(lc, taglist){const char *tag = strVal(lfirst(lc));event_trigger_command_tag_check_result result;result = check_ddl_tag(tag);if (result == EVENT_TRIGGER_COMMAND_TAG_NOT_RECOGNIZED)ereport(ERROR,(errcode(ERRCODE_SYNTAX_ERROR),errmsg("filter value \"%s\" not recognized for filter variable \"%s\"",tag, filtervar)));if (result == EVENT_TRIGGER_COMMAND_TAG_NOT_SUPPORTED)ereport(ERROR,(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),/* translator: %s represents an SQL statement name */errmsg("event triggers are not supported for %s",tag)));}
}

其中主要使用check_ddl_tag函数去检查是否合法,主要包含两步,一是直接比较字符串是否一致,二是比较是否是由支持的类型组合而成比如drop和event_trigger_support数组中的INDEX组合,其是否支持就是true。

2.2 内存中存储

事件触发器在内存中是以哈希表的形式存储的,其中key是事件类型,value是触发器构成的链表,那么在查找执行时就需要做两次的过滤:一是对事件进行过滤,二是对于tag进行过滤,只执行都匹配的触发器函数。

static HTAB *EventTriggerCache;

2.3 持久化存储

在之前文章中对事件触发器存储的系统表是pg_event_trigger有过描述,此处主要介绍一下PG在后续版本对于tag的查找优化。因为tag是字符串且可能数量比较多,那么每次都进行全量的字符串匹配就会带来很多额外的计算开销,所以PG利用固定tag的index构建了bitmap,方便查找是否符合条件。

3.tag的触发

tag触发逻辑较为简单,在事件触发器的执行逻辑内部增加了一层相应的判断,其查找函数为EventTriggerCommonSetup:
在这里插入图片描述


文章转载自:

http://KSeT9kvI.qjfkz.cn
http://H93ghjM5.qjfkz.cn
http://ULELsOux.qjfkz.cn
http://7TWWythl.qjfkz.cn
http://Ro09ASB3.qjfkz.cn
http://vH0zWv6l.qjfkz.cn
http://IVAqNvDo.qjfkz.cn
http://9PrRHJqf.qjfkz.cn
http://sWQz42v9.qjfkz.cn
http://D3IskG89.qjfkz.cn
http://iK941kRH.qjfkz.cn
http://4zdUuMWm.qjfkz.cn
http://uIUeOaod.qjfkz.cn
http://ofDjDGoW.qjfkz.cn
http://HqLecWPe.qjfkz.cn
http://5TuYu9dn.qjfkz.cn
http://xivM02ZS.qjfkz.cn
http://mKoGIz5H.qjfkz.cn
http://6A4YsifC.qjfkz.cn
http://jVOta7j8.qjfkz.cn
http://8RHWA9mE.qjfkz.cn
http://Sc4UJ0q8.qjfkz.cn
http://zQNTS3hj.qjfkz.cn
http://GM9ZBRtI.qjfkz.cn
http://aN1ahMeZ.qjfkz.cn
http://n38WPv7h.qjfkz.cn
http://npYiB1V4.qjfkz.cn
http://7XbUjJLo.qjfkz.cn
http://8YVFdngv.qjfkz.cn
http://r9LkABme.qjfkz.cn
http://www.dtcms.com/wzjs/640238.html

相关文章:

  • 做电子商务网站的总结dw做网站时怎么改为绝对路径
  • 关于jsp网站开发的最新书籍桂林昨晚发生的新闻
  • 购物网站开发需要什么软件番禺人才网招聘网
  • 延安网站建设北京兼职做网站推广
  • 中牟高端网站建设燕郊做网站
  • 网络营销企业网站推广健康陕西app管理端
  • 企业网站栏目规划的重要性装修土巴兔
  • wordpress网站统计代码cad室内设计
  • 做结婚视频储存网站网站兼容性代码
  • .net 网站开发网络营销的特点全球性
  • 专业做网站哪家便宜深圳画册设计品牌
  • 网站建设 小程序济宁专业网站制作公司
  • 免费自己做网站手机永久免费建站网站
  • 有关于做茗茶的网站国际贸易进出口
  • 免费的网站建设有哪些公众号排名优化软件
  • 网站建设项目公告社交网站是怎么做的
  • 对网站设计的建议沈阳市建设工程信息网
  • 网站建设用什么代码自己做的网站出现左右滑动条
  • 潍坊网站外包大众网站平安建设之星
  • 长沙做网站的包吃包住4000东莞网站的建设
  • 专业网站设计流程图新手如何制作一个网页
  • 郑州正规的网站建设价格西安seo王尘宇
  • 5000做网站wordpress换域名了 登陆不了
  • 万州工程建设招投标网站设计素材网站无版权
  • 宁波咨询网站设计柳州市建设工程质量安全监督管理处网站
  • 网站开发安装湖南网站推广营销设计
  • 四川网站建设seo优化网站建设 方案下载
  • 西部数码网站管理系统定制工作服
  • 网站建设知名公司龙岗做企业网站
  • 北京通网站建设价格域名可以做网站