btree/datetime_ops (family)
B-tree 操作符家族 containing 3 classes, 45 operator strategies and 21 support functions in this source build。
当前查看 PostgreSQL 18.6。
说明
B-tree 操作符家族 containing 3 classes, 45 operator strategies and 21 support functions in this source build。
- 对象种类
- 操作符家族
- 索引访问方法
- B-tree
用法
btree/datetime_ops操作符类与家族
一个索引定义可以为索引的每一列指定一个 操作符类 。
操作符类标识该索引在该列上要使用哪些操作符。例如,类型 int4 上的一个 B-树索引会使用 int4_ops 类;这个操作符类包含对 int4 值进行比较所需的函数。实践中,列数据类型的默认操作符类通常已经足够。之所以存在操作符类,主要是因为对某些数据类型来说,可能存在多种有意义的索引行为。例如,我们可能希望按绝对值排序一种复数数据类型,也可能希望按实部排序。我们可以通过为该数据类型定义两个操作符类,并在创建索引时选择合适的那个来做到这一点。操作符类决定了基础排序顺序(之后还可以通过添加排序选项 COLLATE 、 ASC / DESC 和/或 NULLS FIRST / NULLS LAST 来修改)。
除了默认操作符类之外,还有一些内置操作符类:
家族中的操作符策略
家族支持函数
| 支持函数编号 | 左侧类型 | 右侧类型 | 函数签名 | 返回类型 |
|---|---|---|---|---|
| 1 | date | date | date_cmp(date,date) | int4 |
| 2 | date | date | date_sortsupport(internal) | void |
| 4 | date | date | btequalimage(oid) | bool |
| 6 | date | date | date_skipsupport(internal) | void |
| 1 | date | timestamp | date_cmp_timestamp(date,timestamp) | int4 |
| 1 | date | timestamptz | date_cmp_timestamptz(date,timestamptz) | int4 |
| 1 | timestamp | timestamp | timestamp_cmp(timestamp,timestamp) | int4 |
| 2 | timestamp | timestamp | timestamp_sortsupport(internal) | void |
| 4 | timestamp | timestamp | btequalimage(oid) | bool |
| 6 | timestamp | timestamp | timestamp_skipsupport(internal) | void |
| 1 | timestamp | date | timestamp_cmp_date(timestamp,date) | int4 |
| 1 | timestamp | timestamptz | timestamp_cmp_timestamptz(timestamp,timestamptz) | int4 |
| 1 | timestamptz | timestamptz | timestamptz_cmp(timestamptz,timestamptz) | int4 |
| 2 | timestamptz | timestamptz | timestamp_sortsupport(internal) | void |
| 4 | timestamptz | timestamptz | btequalimage(oid) | bool |
| 6 | timestamptz | timestamptz | timestamp_skipsupport(internal) | void |
| 1 | timestamptz | date | timestamptz_cmp_date(timestamptz,date) | int4 |
| 1 | timestamptz | timestamp | timestamptz_cmp_timestamp(timestamptz,timestamp) | int4 |
| 3 | date | interval | in_range(date,date,interval,bool,bool) | bool |
| 3 | timestamp | interval | in_range(timestamp,timestamp,interval,bool,bool) | bool |
| 3 | timestamptz | interval | in_range(timestamptz,timestamptz,interval,bool,bool) | bool |
本家族的操作符类
| 操作符类 | 输入类型 | 键类型 | 默认值 |
|---|---|---|---|
| date_ops | date | 与输入类型相同 | 是 |
| timestamptz_ops | timestamptz | 与输入类型相同 | 是 |
| timestamp_ops | timestamp | 与输入类型相同 | 是 |
相关条目
文档与源码
- Matching PostgreSQL source archive
- PostgreSQL 18 English manual: indexes-opclass.html
- PostgreSQL 18 English manual: catalog-pg-opfamily.html
- PostgreSQL 18 English manual: catalog-pg-amop.html
- PostgreSQL 18 English manual: catalog-pg-amproc.html
来源构建
- 版本
- 18.6
- 构建
- https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
- 来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
版本比较
PostgreSQL 10 → 11: 属性变化。
以下差异保留原始字段名与英文源描述。
--- PostgreSQL 10
+++ PostgreSQL 11
@@ -590,6 +590,33 @@
"number": "2",
"result_type": "void",
"right_type": "timestamptz"
+ },
+ {
+ "family": "datetime_ops",
+ "function": "in_range(date,date,interval,bool,bool)",
+ "left_type": "date",
+ "method": "btree",
+ "number": "3",
+ "result_type": "bool",
+ "right_type": "interval"
+ },
+ {
+ "family": "datetime_ops",
+ "function": "in_range(timestamp,timestamp,interval,bool,bool)",
+ "left_type": "timestamp",
+ "method": "btree",
+ "number": "3",
+ "result_type": "bool",
+ "right_type": "interval"
+ },
+ {
+ "family": "datetime_ops",
+ "function": "in_range(timestamptz,timestamptz,interval,bool,bool)",
+ "left_type": "timestamptz",
+ "method": "btree",
+ "number": "3",
+ "result_type": "bool",
+ "right_type": "interval"
}
]
}
比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。
相关条目
导出 JSON · 返回运算符族 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。