mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
Remove assumptions that not-equals operators cannot be in any opclass.
get_op_btree_interpretation assumed this in order to save some duplication of code, but it's not true in general anymore because we added <> support to btree_gist. (We still assume it for btree opclasses, though.) Also, essentially the same logic was baked into predtest.c. Get rid of that duplication by generalizing get_op_btree_interpretation so that it can be used by predtest.c. Per bug report from Denis de Bernardy and investigation by Jeff Davis, though I didn't use Jeff's patch exactly as-is. Back-patch to 9.1; we do not support this usage before that.
This commit is contained in:
@@ -17,6 +17,15 @@
|
||||
#include "access/htup.h"
|
||||
#include "nodes/pg_list.h"
|
||||
|
||||
/* Result list element for get_op_btree_interpretation */
|
||||
typedef struct OpBtreeInterpretation
|
||||
{
|
||||
Oid opfamily_id; /* btree opfamily containing operator */
|
||||
int strategy; /* its strategy number */
|
||||
Oid oplefttype; /* declared left input datatype */
|
||||
Oid oprighttype; /* declared right input datatype */
|
||||
} OpBtreeInterpretation;
|
||||
|
||||
/* I/O function selector for get_type_io_data */
|
||||
typedef enum IOFuncSelector
|
||||
{
|
||||
@@ -50,8 +59,7 @@ extern bool get_compatible_hash_operators(Oid opno,
|
||||
Oid *lhs_opno, Oid *rhs_opno);
|
||||
extern bool get_op_hash_functions(Oid opno,
|
||||
RegProcedure *lhs_procno, RegProcedure *rhs_procno);
|
||||
extern void get_op_btree_interpretation(Oid opno,
|
||||
List **opfamilies, List **opstrats);
|
||||
extern List *get_op_btree_interpretation(Oid opno);
|
||||
extern bool equality_ops_are_compatible(Oid opno1, Oid opno2);
|
||||
extern Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype,
|
||||
int16 procnum);
|
||||
|
Reference in New Issue
Block a user