开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

函数ereport是什么意思?

已解决

函数ereport是什么意思?

展开
收起
云上静思 2022-10-18 16:10:05 871 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    可以看到ereport这个语句主要分三部分,error就是我们的严重级别,errcode就是一些错误代码, 最后是errmsg。

    严重级别根据PG里边的一些规范,我们这里规定是用DEBUG5到DEBUG1,包括我们的NOTICED、WARNING、ER ROR、FATAL、PANIC,随着级别越来越高,对于客户的信息产生了不同的重要程度,也可以通过我们的配置文件设置 给客户输出什么级别的信息。

    如果是error或者更高,需要注意的是如果严重级别没有设置,或者说严重级别设置了error或者更高ereport,会终止用户 定义函数的执行,并且不会返回到调用者。如果是严重级别低于error,那ereport会正常返回。

    errcode指定对于该情况的一些错误标识代码,这里的错误代码一般由5个字符组成,这5个字符包含了一些数字和大写字 母,它表示多种错误和警告情况的代码,所以它也是分层次的。

    前两位一个是错误的总分类,后三个字符表示一个情况的子类,代码5个0,“00000”代表着一个成功的状态,这可以帮 助我们快速定位问题的类型,也大概知道debug的方向在哪里。如果没有指定errcode错误严重性,特别是error或者更高 的错误标识,会默认使用ERRCODE_INTERNAL_ERROR。如果错误级别是warning标识符的这种,errcode会默认 使用ERRCODE_WARNING 。

    如果错误严重级别是在notice以及以下,就会使用ERRCODE_SUCCESSFUL_COMPLETION这么一个errcode,这 是一个默认的情况,如果没有设置errcode的话。

    对于我们来讲,有的时候不用errcode是一个很方便的情况,但是如果考虑不用errcode,要很清楚自己不用的原因是什 么,考虑一下它们是否合适。

    剩下就是errmsg。errmsg主要是提供消息主体,就是要报错的信息。然后就是ereport,ereport这里边实际上还有很多 辅助函数,就里提到了我们的errcode(),errmsg()这里边都是辅助函数,还有很多其他的辅助函数,这些辅助函数大家 可以在PG的官网上进行查看。

    以上内容摘自《PolarDB for PostgreSQL 源码与应用实战》电子书,点击https://developer.aliyun.com/ebook/download/7773可下载完整版

    2022-10-18 17:13:23
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载