{"Entry":{"collection":"opclass","key":"class-btree-record_image_ops","name":"btree/record_image_ops (class)","aliases":["record_image_ops","btree/record_image_ops"],"metadata":{"aliases":["record_image_ops","btree/record_image_ops"],"category":"B-tree classes","content_hash":"c3c4d6ecc6eb52215f50a812f995ed279f77640a9b570890557b30decdd77e61","derived_content_hash":"c0348c9f526c74654a857949221ef969113d6caa8d0158f3a35c0f387d7719d3","imported_at":"2026-09-30T00:40:38.322826+08:00","name":"btree/record_image_ops (class)","name_zh":"","slug":"class-btree-record_image_ops","summary":"B-tree operator class for record; member of record_image_ops."}},"Definition":{"Collection":"opclass","Key":"class-btree-record_image_ops","SourceDatabase":"center","Version":"18","SourceTable":"operator_class","SourceKey":"class-btree-record_image_ops","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","Facts":{"aliases":["record_image_ops","btree/record_image_ops"],"class":{"default":"f","family":"record_image_ops","input_type":"record","key_type":"none","method":"btree","name":"record_image_ops"},"classes":[{"default":"f","family":"record_image_ops","family_slug":"family-btree-record_image_ops","input_type":"record","key_type":"none","method":"btree","name":"record_image_ops","slug":"class-btree-record_image_ops","source_oid":""}],"comparison_data":{"attributes":{"default":"f","family":"record_image_ops","input_type":"record","key_type":"none","method":"btree","name":"record_image_ops"},"classes":[{"default":"f","family":"record_image_ops","input_type":"record","key_type":"none","method":"btree","name":"record_image_ops"}],"kind":"class","operators":[{"family":"record_image_ops","left_type":"record","method":"btree","operator":"*\u003c(record,record)","purpose":"search","right_type":"record","sort_family":"","strategy":"1"},{"family":"record_image_ops","left_type":"record","method":"btree","operator":"*\u003c=(record,record)","purpose":"search","right_type":"record","sort_family":"","strategy":"2"},{"family":"record_image_ops","left_type":"record","method":"btree","operator":"*=(record,record)","purpose":"search","right_type":"record","sort_family":"","strategy":"3"},{"family":"record_image_ops","left_type":"record","method":"btree","operator":"*\u003e=(record,record)","purpose":"search","right_type":"record","sort_family":"","strategy":"4"},{"family":"record_image_ops","left_type":"record","method":"btree","operator":"*\u003e(record,record)","purpose":"search","right_type":"record","sort_family":"","strategy":"5"}],"support_functions":[{"family":"record_image_ops","function":"btrecordimagecmp(record,record)","left_type":"record","method":"btree","number":"1","result_type":"int4","right_type":"record"}]},"comparison_hash":"39c96c1acd91c6d69d1a8cedae593d6f1cd3dce24a69b9c9f37c4243c4eb403a","description":["B-tree operator class for record; member of record_image_ops."],"description_zh":"record_image_ops 是 btree 的运算符类。","description_zh_html":"\u003cp\u003erecord_image_ops 是 btree 的运算符类。\u003c/p\u003e\u003cdl\u003e\u003cdt\u003e名称\u003c/dt\u003e\u003cdd\u003e\u003ccode\u003erecord_image_ops\u003c/code\u003e\u003c/dd\u003e\u003cdt\u003e运算符族\u003c/dt\u003e\u003cdd\u003e\u003ccode\u003erecord_image_ops\u003c/code\u003e\u003c/dd\u003e\u003cdt\u003e索引访问方法\u003c/dt\u003e\u003cdd\u003e\u003ccode\u003ebtree\u003c/code\u003e\u003c/dd\u003e\u003cdt\u003e默认类\u003c/dt\u003e\u003cdd\u003e\u003ccode\u003e否\u003c/code\u003e\u003c/dd\u003e\u003cdt\u003e存储键类型\u003c/dt\u003e\u003cdd\u003e\u003ccode\u003e无\u003c/code\u003e\u003c/dd\u003e\u003cdt\u003e输入类型\u003c/dt\u003e\u003cdd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/dd\u003e\u003c/dl\u003e\u003ch3\u003e策略运算符\u003c/h3\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e策略编号\u003c/th\u003e\u003cth\u003e用途\u003c/th\u003e\u003cth\u003e运算符\u003c/th\u003e\u003cth\u003e左操作数类型\u003c/th\u003e\u003cth\u003e右操作数类型\u003c/th\u003e\u003cth\u003e排序运算符族\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003e1\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e搜索\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e*\u0026lt;(record,record)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003e2\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e搜索\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e*\u0026lt;=(record,record)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003e3\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e搜索\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e*=(record,record)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003e4\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e搜索\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e*\u0026gt;=(record,record)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003e5\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e搜索\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e*\u0026gt;(record,record)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003e\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003ch3\u003e支持函数\u003c/h3\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003e支持函数编号\u003c/th\u003e\u003cth\u003e实现函数\u003c/th\u003e\u003cth\u003e左操作数类型\u003c/th\u003e\u003cth\u003e右操作数类型\u003c/th\u003e\u003cth\u003e结果类型\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003ccode\u003e1\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003ebtrecordimagecmp(record,record)\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003erecord\u003c/code\u003e\u003c/td\u003e\u003ctd\u003e\u003ccode\u003eint4\u003c/code\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003ch3\u003e同版本中文手册节选\u003c/h3\u003e\u003cp\u003e\n   一个索引定义可以为索引的每一列指定一个\u003cem class=\"firstterm\"\u003e操作符类\u003c/em\u003e。\n\u003c/p\u003e\u003cp\u003e\n   操作符类标识该索引在该列上要使用哪些操作符。例如，类型 \u003ccode class=\"type\"\u003eint4\u003c/code\u003e 上的一个 B-树索引会使用 \u003ccode class=\"literal\"\u003eint4_ops\u003c/code\u003e 类；这个操作符类包含对 \u003ccode class=\"type\"\u003eint4\u003c/code\u003e 值进行比较所需的函数。实践中，列数据类型的默认操作符类通常已经足够。之所以存在操作符类，主要是因为对某些数据类型来说，可能存在多种有意义的索引行为。例如，我们可能希望按绝对值排序一种复数数据类型，也可能希望按实部排序。我们可以通过为该数据类型定义两个操作符类，并在创建索引时选择合适的那个来做到这一点。操作符类决定了基础排序顺序（之后还可以通过添加排序选项 \u003ccode class=\"literal\"\u003eCOLLATE\u003c/code\u003e、\u003ccode class=\"literal\"\u003eASC\u003c/code\u003e/\u003ccode class=\"literal\"\u003eDESC\u003c/code\u003e 和/或 \u003ccode class=\"literal\"\u003eNULLS FIRST\u003c/code\u003e/\u003ccode class=\"literal\"\u003eNULLS LAST\u003c/code\u003e 来修改）。\n  \u003c/p\u003e\u003cp\u003e\n   除了默认操作符类之外，还有一些内置操作符类：\n\n   \u003c/p\u003e\u003cp\u003e\n    下面的查询会显示所有已定义的操作符类：\n\n\u003c/p\u003e\u003cp\u003e\u003ca href=\"/zh/docs/18/indexes-opclass.html\"\u003e查看完整中文手册与上下文\u003c/a\u003e。\u003c/p\u003e","facts":[{"label":"Object kind","value":"Operator class"},{"label":"Index AM","value":"B-tree"},{"label":"Input type","value":"record"},{"label":"Stored key type","value":"Same as input type (catalog zero)"},{"label":"Default class","value":"no"}],"facts_zh":[{"label":"对象种类","value":"操作符类"},{"label":"索引访问方法","value":"B-tree"},{"label":"输入类型","value":"record"},{"label":"存储键类型","value":"Same as input type (catalog zero)"},{"label":"默认操作符类","value":"否"}],"operators":[{"description":"less than","family":"record_image_ops","family_slug":"family-btree-record_image_ops","left_type":"record","method":"btree","operator":"*\u003c(record,record)","operator_slug":"op-2a3c-record-record","purpose":"search","result_type":"bool","right_type":"record","sort_family":"","sort_family_slug":"","strategy":"1"},{"description":"less than or equal","family":"record_image_ops","family_slug":"family-btree-record_image_ops","left_type":"record","method":"btree","operator":"*\u003c=(record,record)","operator_slug":"op-2a3c3d-record-record","purpose":"search","result_type":"bool","right_type":"record","sort_family":"","sort_family_slug":"","strategy":"2"},{"description":"identical","family":"record_image_ops","family_slug":"family-btree-record_image_ops","left_type":"record","method":"btree","operator":"*=(record,record)","operator_slug":"op-2a3d-record-record","purpose":"search","result_type":"bool","right_type":"record","sort_family":"","sort_family_slug":"","strategy":"3"},{"description":"greater than or equal","family":"record_image_ops","family_slug":"family-btree-record_image_ops","left_type":"record","method":"btree","operator":"*\u003e=(record,record)","operator_slug":"op-2a3e3d-record-record","purpose":"search","result_type":"bool","right_type":"record","sort_family":"","sort_family_slug":"","strategy":"4"},{"description":"greater than","family":"record_image_ops","family_slug":"family-btree-record_image_ops","left_type":"record","method":"btree","operator":"*\u003e(record,record)","operator_slug":"op-2a3e-record-record","purpose":"search","result_type":"bool","right_type":"record","sort_family":"","sort_family_slug":"","strategy":"5"}],"related":[{"label":"B-tree Index AM","url":"/wiki/indexam/btree/?v=18"},{"label":"record_image_ops family","url":"/wiki/opclass/family-btree-record_image_ops/?v=18"},{"label":"record data type","url":"/wiki/type/record/?v=18"}],"release":{"catalog_fingerprint":"deec62e0f0c649d9d0d058ddd0b16bf41afffd569c3fd73949ff0971ce5cabd6","channel":"stable","label":"18.6","major":"18","manual_fingerprint":"fefce9e478eb2afe5e17e869492bbedc67dce23d317f0a5257240113d6496ebc","ref":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","source_sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"},"sections":[{"paragraphs":["An index definition can specify an operator class for each column of an index.","The operator class identifies the operators to be used by the index for that column. For example, a B-tree index on the type int4 would use the int4_ops class; this operator class includes comparison functions for values of type int4 . In practice the default operator class for the column's data type is usually sufficient. The main reason for having operator classes is that for some data types, there could be more than one meaningful index behavior. For example, we might want to sort a complex-number data type either by absolute value or by real part. We could do this by defining two operator classes for the data type and then selecting the proper class when making an index. The operator class determines the basic sort ordering (which can then be modified by adding sort options COLLATE , ASC / DESC and/or NULLS FIRST / NULLS LAST ).","There are also some built-in operator classes besides the default ones:"],"title":"Operator classes and families"}],"sections_zh":[{"paragraphs":["一个索引定义可以为索引的每一列指定一个 操作符类 。","操作符类标识该索引在该列上要使用哪些操作符。例如，类型 int4 上的一个 B-树索引会使用 int4_ops 类；这个操作符类包含对 int4 值进行比较所需的函数。实践中，列数据类型的默认操作符类通常已经足够。之所以存在操作符类，主要是因为对某些数据类型来说，可能存在多种有意义的索引行为。例如，我们可能希望按绝对值排序一种复数数据类型，也可能希望按实部排序。我们可以通过为该数据类型定义两个操作符类，并在创建索引时选择合适的那个来做到这一点。操作符类决定了基础排序顺序（之后还可以通过添加排序选项 COLLATE 、 ASC / DESC 和/或 NULLS FIRST / NULLS LAST 来修改）。","除了默认操作符类之外，还有一些内置操作符类："],"title":"操作符类与家族"}],"signature":"btree/record_image_ops","source_oid":"","sources":[{"label":"Matching PostgreSQL source archive","sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"},{"label":"PostgreSQL 18 English manual: indexes-opclass.html","path":"indexes-opclass.html","sha256":"07de06abf3a2aff2a891a2789def434d9b76705e54d45ca5338dc13451ae2962","url":"/docs/18/indexes-opclass.html"},{"label":"PostgreSQL 18 English manual: catalog-pg-opclass.html","path":"catalog-pg-opclass.html","sha256":"6f131a502f81b813d447e746fc39ee28e5bdfb3ce8e8baea36a71ad0fde78c40","url":"/docs/18/catalog-pg-opclass.html"},{"label":"PostgreSQL 18 English manual: catalog-pg-amop.html","path":"catalog-pg-amop.html","sha256":"e65b90ee78eaf4b4da97ce5b08b972cee2e2660b882ec107be22eca47201f7d1","url":"/docs/18/catalog-pg-amop.html"},{"label":"PostgreSQL 18 English manual: catalog-pg-amproc.html","path":"catalog-pg-amproc.html","sha256":"0a09afbde0ba8da9899bf770b86d8301bee116057b16ebe7db0e4a7fca2e91c6","url":"/docs/18/catalog-pg-amproc.html"}],"support_functions":[{"family":"record_image_ops","family_slug":"family-btree-record_image_ops","function":"btrecordimagecmp(record,record)","left_type":"record","method":"btree","number":"1","result_type":"int4","right_type":"record"}],"tables":[{"columns":[{"key":"operator","label":"Operator overload"},{"key":"strategy","label":"Strategy"},{"key":"purpose","label":"Purpose"},{"key":"sort_family","label":"Ordering family"},{"key":"scope","label":"Membership scope"},{"key":"description","label":"Source description"}],"key":"operators","rows":[{"description":"less than","operator":{"text":"*\u003c(record,record)","url":"/wiki/operator/op-2a3c-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"1"},{"description":"less than or equal","operator":{"text":"*\u003c=(record,record)","url":"/wiki/operator/op-2a3c3d-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"2"},{"description":"identical","operator":{"text":"*=(record,record)","url":"/wiki/operator/op-2a3d-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"3"},{"description":"greater than or equal","operator":{"text":"*\u003e=(record,record)","url":"/wiki/operator/op-2a3e3d-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"4"},{"description":"greater than","operator":{"text":"*\u003e(record,record)","url":"/wiki/operator/op-2a3e-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"5"}],"title":"Family operator strategies"},{"columns":[{"key":"number","label":"Support number"},{"key":"left_type","label":"Left type"},{"key":"right_type","label":"Right type"},{"key":"function","label":"Function signature"},{"key":"result_type","label":"Result type"}],"key":"support-functions","rows":[{"function":"btrecordimagecmp(record,record)","left_type":{"text":"record","url":"/wiki/type/record/?v=18"},"number":"1","result_type":"int4","right_type":{"text":"record","url":"/wiki/type/record/?v=18"}}],"title":"Family support functions"},{"columns":[{"key":"class","label":"Class"},{"key":"input_type","label":"Input type"},{"key":"key_type","label":"Key type"},{"key":"default","label":"Default"}],"key":"classes","rows":[{"class":{"text":"record_image_ops","url":"/wiki/opclass/class-btree-record_image_ops/?v=18"},"default":"no","input_type":{"text":"record","url":"/wiki/type/record/?v=18"},"key_type":"Same as input type"}],"title":"Classes in this family"}],"tables_zh":[{"columns":[{"key":"operator","label":"操作符重载"},{"key":"strategy","label":"策略"},{"key":"purpose","label":"用途"},{"key":"sort_family","label":"排序家族"},{"key":"scope","label":"成员范围"},{"key":"description","label":"源码说明"}],"key":"operators","rows":[{"description":"小于","operator":{"text":"*\u003c(record,record)","url":"/wiki/operator/op-2a3c-record-record/?v=18"},"purpose":"搜索","scope":"操作符类输入类型对","sort_family":"","strategy":"1"},{"description":"小于等于","operator":{"text":"*\u003c=(record,record)","url":"/wiki/operator/op-2a3c3d-record-record/?v=18"},"purpose":"搜索","scope":"操作符类输入类型对","sort_family":"","strategy":"2"},{"description":"完全相同","operator":{"text":"*=(record,record)","url":"/wiki/operator/op-2a3d-record-record/?v=18"},"purpose":"搜索","scope":"操作符类输入类型对","sort_family":"","strategy":"3"},{"description":"大于等于","operator":{"text":"*\u003e=(record,record)","url":"/wiki/operator/op-2a3e3d-record-record/?v=18"},"purpose":"搜索","scope":"操作符类输入类型对","sort_family":"","strategy":"4"},{"description":"大于","operator":{"text":"*\u003e(record,record)","url":"/wiki/operator/op-2a3e-record-record/?v=18"},"purpose":"搜索","scope":"操作符类输入类型对","sort_family":"","strategy":"5"}],"title":"家族中的操作符策略"},{"columns":[{"key":"number","label":"支持函数编号"},{"key":"left_type","label":"左侧类型"},{"key":"right_type","label":"右侧类型"},{"key":"function","label":"函数签名"},{"key":"result_type","label":"返回类型"}],"key":"support-functions","rows":[{"function":"btrecordimagecmp(record,record)","left_type":{"text":"record","url":"/wiki/type/record/?v=18"},"number":"1","result_type":"int4","right_type":{"text":"record","url":"/wiki/type/record/?v=18"}}],"title":"家族支持函数"},{"columns":[{"key":"class","label":"操作符类"},{"key":"input_type","label":"输入类型"},{"key":"key_type","label":"键类型"},{"key":"default","label":"默认值"}],"key":"classes","rows":[{"class":{"text":"record_image_ops","url":"/wiki/opclass/class-btree-record_image_ops/?v=18"},"default":"否","input_type":{"text":"record","url":"/wiki/type/record/?v=18"},"key_type":"Same as input type"}],"title":"本家族的操作符类"}],"zh_from":{"authored_translation":"source-derived-structured-summary","body_sha256":"d3eab512343483380786b17496f47545ca81d59a5b21b4d65171eb9d186ef4b2","kind":"same-version-chinese-manual-with-source-derived-structured-summary","manual":{"anchor":"","build_id":107,"extraction":"concept-introduction","fragment_sha256":"dad5545190ebde655fce48dfc13cd02d2863166fac7cf0c2b28b059c9e419ae4","locale":"zh-Hans","page_key":"indexes-opclass.html","source_hash":"cce6c9b1d4fbb418823aa7be2585facae45f45a5f75c43bd26170c1383c2a4b5","source_revision":"unknown:rendered-translation-baseline","translated_from_revision":null,"translation_revision":"git:b1b500221dbe5437cfca004d6b04d3f6e422765d;html-sha256:08e987a66af27b98444a8057c256314eafa13611a3fb9e888214fc436824244b","url":"/zh/docs/18/indexes-opclass.html","version":"18"},"runtime_rerun":false,"source_facts_revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}},"ManualEvidence":{"release":{"catalog_fingerprint":"deec62e0f0c649d9d0d058ddd0b16bf41afffd569c3fd73949ff0971ce5cabd6","channel":"stable","label":"18.6","major":"18","manual_fingerprint":"fefce9e478eb2afe5e17e869492bbedc67dce23d317f0a5257240113d6496ebc","ref":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","source_sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"},"sources":[{"label":"Matching PostgreSQL source archive","sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"},{"label":"PostgreSQL 18 English manual: indexes-opclass.html","path":"indexes-opclass.html","sha256":"07de06abf3a2aff2a891a2789def434d9b76705e54d45ca5338dc13451ae2962","url":"/docs/18/indexes-opclass.html"},{"label":"PostgreSQL 18 English manual: catalog-pg-opclass.html","path":"catalog-pg-opclass.html","sha256":"6f131a502f81b813d447e746fc39ee28e5bdfb3ce8e8baea36a71ad0fde78c40","url":"/docs/18/catalog-pg-opclass.html"},{"label":"PostgreSQL 18 English manual: catalog-pg-amop.html","path":"catalog-pg-amop.html","sha256":"e65b90ee78eaf4b4da97ce5b08b972cee2e2660b882ec107be22eca47201f7d1","url":"/docs/18/catalog-pg-amop.html"},{"label":"PostgreSQL 18 English manual: catalog-pg-amproc.html","path":"catalog-pg-amproc.html","sha256":"0a09afbde0ba8da9899bf770b86d8301bee116057b16ebe7db0e4a7fca2e91c6","url":"/docs/18/catalog-pg-amproc.html"}]},"MeasuredEvidence":{}},"Text":{"Collection":"opclass","Key":"class-btree-record_image_ops","SourceDatabase":"center","Version":"18","Locale":"en","Title":"btree/record_image_ops (class)","Summary":"B-tree operator class for record; member of record_image_ops.","BodyHTML":"\u003cp\u003eB-tree operator class for record; member of record_image_ops.\u003c/p\u003e","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","ContentHash":"3c1ae84429461ce8b7b40c07160bd4e516d128031f233bcc5118f1f204515495","Payload":{"description":["B-tree operator class for record; member of record_image_ops."],"related":[{"label":"B-tree Index AM","url":"/wiki/indexam/btree/?v=18"},{"label":"record_image_ops family","url":"/wiki/opclass/family-btree-record_image_ops/?v=18"},{"label":"record data type","url":"/wiki/type/record/?v=18"}],"sections":[{"paragraphs":["An index definition can specify an operator class for each column of an index.","The operator class identifies the operators to be used by the index for that column. For example, a B-tree index on the type int4 would use the int4_ops class; this operator class includes comparison functions for values of type int4 . In practice the default operator class for the column's data type is usually sufficient. The main reason for having operator classes is that for some data types, there could be more than one meaningful index behavior. For example, we might want to sort a complex-number data type either by absolute value or by real part. We could do this by defining two operator classes for the data type and then selecting the proper class when making an index. The operator class determines the basic sort ordering (which can then be modified by adding sort options COLLATE , ASC / DESC and/or NULLS FIRST / NULLS LAST ).","There are also some built-in operator classes besides the default ones:"],"title":"Operator classes and families"}],"tables":[{"columns":[{"key":"operator","label":"Operator overload"},{"key":"strategy","label":"Strategy"},{"key":"purpose","label":"Purpose"},{"key":"sort_family","label":"Ordering family"},{"key":"scope","label":"Membership scope"},{"key":"description","label":"Source description"}],"key":"operators","rows":[{"description":"less than","operator":{"text":"*\u003c(record,record)","url":"/wiki/operator/op-2a3c-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"1"},{"description":"less than or equal","operator":{"text":"*\u003c=(record,record)","url":"/wiki/operator/op-2a3c3d-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"2"},{"description":"identical","operator":{"text":"*=(record,record)","url":"/wiki/operator/op-2a3d-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"3"},{"description":"greater than or equal","operator":{"text":"*\u003e=(record,record)","url":"/wiki/operator/op-2a3e3d-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"4"},{"description":"greater than","operator":{"text":"*\u003e(record,record)","url":"/wiki/operator/op-2a3e-record-record/?v=18"},"purpose":"search","scope":"Class input pair","sort_family":"","strategy":"5"}],"title":"Family operator strategies"},{"columns":[{"key":"number","label":"Support number"},{"key":"left_type","label":"Left type"},{"key":"right_type","label":"Right type"},{"key":"function","label":"Function signature"},{"key":"result_type","label":"Result type"}],"key":"support-functions","rows":[{"function":"btrecordimagecmp(record,record)","left_type":{"text":"record","url":"/wiki/type/record/?v=18"},"number":"1","result_type":"int4","right_type":{"text":"record","url":"/wiki/type/record/?v=18"}}],"title":"Family support functions"},{"columns":[{"key":"class","label":"Class"},{"key":"input_type","label":"Input type"},{"key":"key_type","label":"Key type"},{"key":"default","label":"Default"}],"key":"classes","rows":[{"class":{"text":"record_image_ops","url":"/wiki/opclass/class-btree-record_image_ops/?v=18"},"default":"no","input_type":{"text":"record","url":"/wiki/type/record/?v=18"},"key_type":"Same as input type"}],"title":"Classes in this family"}]}},"RequestedLocale":"en","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
