`
Aoogoo
  • 浏览: 21513 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Postgresql源码中的加法函数:Size add_size(Size s1, Size s2)

阅读更多
看到这个函数真是佩服他们的谨慎。一个简单的加法函数,居然写成这样。
/*
 * Add two Size values, checking for overflow
 */
Size
add_size(Size s1, Size s2)
{
	Size		result;

	result = s1 + s2;
	/* We are assuming Size is an unsigned type here... */
	if (result < s1 || result < s2)
		ereport(ERROR,
				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
				 errmsg("requested shared memory size overflows size_t")));
	return result;
}

还考虑了溢出,真够谨慎的。
下面是乘法函数
/*
 * Multiply two Size values, checking for overflow
 */
Size
mul_size(Size s1, Size s2)
{
	Size		result;

	if (s1 == 0 || s2 == 0)
		return 0;
	result = s1 * s2;
	/* We are assuming Size is an unsigned type here... */
	if (result / s2 != s1)
		ereport(ERROR,
				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
				 errmsg("requested shared memory size overflows size_t")));
	return result;
}

1
0
分享到:
评论
2 楼 Aoogoo 2010-04-29  
还希望boyhailong能具体指出哪里有问题?
1 楼 boyhailong 2010-04-28  
那个加法的算法是不是有点问题啊?

相关推荐

    PostgreSQL中文手册9.2

    五、 pg _roles:_roles:_roles:_roles: _roles: 69 六、 pg_rules: pg_rules:pg_rules:pg_rules: pg_rules: 69 七、 pg_settings: pg_settings: pg_settings: pg_settings:pg_settings: pg_settings:pg_settings:pg_...

    PostgreSQL-PostGIS-TimescaleDB:PostgreSQL + PostGIS + TimescaleDB泊坞窗图片:elephant::globe_showing_Americas::chart_increasing:

    Docker映像具有:当前组件版本: PostgreSQL: 12.5 () PostGIS: 3.1.1 () TimescaleDB: 2.0.1 () 如何建造: $ docker build -t binakot/postgresql-postgis-timescaledb . 如何运行: $ docker run -d --...

    Navicat Premium_11.1.8_po

    Navicat Premium是一套数据库bai管理工具,结合了其它Navicat成员du的功能,支持单一程序同zhi时连接到MySQL、daoMariaDB、SQL Server、SQLite、Oracle和PostgreSQL数据库。Navicat Premium可满足现今数据库管理系统...

    postgresql 实现c language外部函数调用

    在PostgreSQL中,有时需要利用C语言来编写高性能或安全的关键功能,这可以通过创建外部函数实现。本教程将详细介绍如何在PostgreSQL中实现C语言外部函数的调用,包括环境配置、源代码编写、编译、创建函数以及测试...

    pg-listen::satellite_antenna:PostgreSQL LISTEN&NOTIFY for node.js终于可以工作了

    pg听Postgres有效的监听和通知 PostgreSQL可以充当消息代理:从一个数据库客户端向其他数据库客户端发送带有任意有效负载的通知。 与node.js 8+和普通JavaScript或TypeScript 3一起使用。使用Postgres 语句并使用...

    jsonb-extend:PostgreSQL jsonb_extend 函数

    为 PostgreSQL 9.4 提供将两个或多个jsonb值合并为一个值的函数。 提供的功能: jsonb_extend(a jsonb, b jsonb) a - jsonb 对象/数组b - jsonb 对象/数组/值如果a是 jsonb 对象,那么b应该是 jsonb 对象。 jsonb...

    postgresql14+postgis32_14

    PostgreSQL 14 和 PostGIS 3.2 是两个在地理信息系统(GIS)领域中非常重要的开源组件。PostgreSQL 是一款强大的对象关系型数据库管理系统,而 PostGIS 是在其基础上扩展的,提供了空间数据类型和相关的操作功能,...

    PostgreSQL_8.2.3.rar_postgresql_windows 8

    8. **函数与过程**:PostgreSQL允许用户定义自定义函数和存储过程,文档会展示如何编写和使用这些高级功能。 9. **性能调优**:对于大型系统,性能优化是关键。文档可能包含有关调整参数、监控系统状态和分析性能...

    ansible-postgresql-role:安装,配置和管理Postgresql集群的角色

    PostgreSQL Ansible角色 Ansible角色,用于安装和配置PostgreSQL集群,数据库和用户。 请参阅。安装此角色已在Ansible 2.5.0及更高版本上进行了测试。 安装: ansible-galaxy install trainline-eu.ansible_...

    PostgreSQL_DBMS_for_Windows_922_136133.exe

    支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。

    PostgreSQL简单函数创建

    本文将深入探讨如何在PostgreSQL中创建自定义函数,特别是在使用C语言编写动态库来实现这一功能时的简单示例。 首先,我们需要理解自定义函数在PostgreSQL中的作用。自定义函数允许用户根据特定需求扩展数据库的...

    mixpanel-puller::bar_chart:从Mixpanel中提取原始事件和漏斗数据,并迁移到PostgreSQL中

    然后提取相关数据并将其插入PostgreSQL中的各个表中。 它由两个主要的可运行脚本组成: funnels_script.py-从Mixpanel提取前7天的漏斗数据(脚本每周运行一次),并将其插入到漏斗事务(funnel_trans)表中。 ...

    Oracle迁postgre 不兼容字段、函数等更改

    2. 字符串函数:Oracle 中的 CONCAT 函数在 PostgreSQL 中对应的函数是 CONCAT_WS 或者 ||。例如,在 Oracle 中的 CONCAT('a', 'b') 等同于 PostgreSQL 中的 CONCAT_WS('', 'a', 'b') 或者 'a' || 'b'。 3. 日期...

    wasmer-postgres::computer_disk::spider_web:Postgres库用于运行WebAssembly二进制文件

    4. **数据库扩展**: PostgreSQL允许通过扩展来添加新的功能,wasmer-postgres就是这样的扩展,它让PostgreSQL可以执行WASM代码,可能用于实现自定义的存储过程、函数或其他数据库操作。 5. **安全性与隔离**: 使用...

    postgresql 兼容 oracle 函数

    标题和描述中提到的“postgresql 兼容 oracle 函数”就是指在PostgreSQL中实现与Oracle类似的函数,以便于在两个系统间平滑过渡。 Oracle数据库拥有大量的内置函数,如日期处理、字符串操作、数学计算等,这些在...

    mysql_generate_series:mysql_generate_series是PostgreSQL generate_series函数MySQL复制品

    mysql_generate_series是PostgreSQL函数MySQL版本。 该版本(原始版本)经过(大量)改编,并试图简化方法调用,并在可能的情况下使MySQL版本参数遵循PostgreSQL版本。 它提供了一个单一的方法generate_series...

    novice-farmer1::sheaf_of_rice:— Matkul数据库系统挑战使用PHP PostgreSQL Bootstrap并通过FTP连接到Anna服务器的#1新手农民

    :man::sheaf_of_rice: — Matkul数据库系统挑战使用PHP PostgreSQL Bootstrap并通过FTP连接到Anna服务器的#1新手农民 挑战新手农民#1 使用Postgresql FTP Bootstrap挑战新手农民#1 matkul Sistem基础数据

    windows下编译postgresql源码编译环境搭建

    在Windows环境下编译PostgreSQL源码是一项技术性较强的任务,涉及到多个步骤和工具。PostgreSQL是一种开源的关系型数据库管理系统,其源代码可以在多种操作系统上编译,包括Windows。以下是详细的编译过程和所需环境...

    postgreSQL源码

    在本案例中,"PostgreSQL from github" 指的是从GitHub上获取的PostgreSQL项目的源码仓库。 PostgreSQL的源码包含了许多组成部分,如服务器端程序、客户端工具、库文件以及文档等。"postgres-master"这个文件名可能...

    PostgreSQL IF/IFNULL 函数 内核开发

    1. 博客:PostgreSQL的学习心得和知识总结(六十七)|语法级自上而下完美实现MySQL数据库的 IF函数和IFNULL函数 的实现方案

Global site tag (gtag.js) - Google Analytics