1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-24 01:29:19 +03:00

Move strategy numbers to include/access/stratnum.h

For upcoming BRIN opclasses, it's convenient to have strategy numbers
defined in a single place.  Since there's nothing appropriate, create
it.  The StrategyNumber typedef now lives there, as well as existing
strategy numbers for B-trees (from skey.h) and R-tree-and-friends (from
gist.h).  skey.h is forced to include stratnum.h because of the
StrategyNumber typedef, but gist.h is not; extensions that currently
rely on gist.h for rtree strategy numbers might need to add a new

A few .c files can stop including skey.h and/or gist.h, which is a nice
side benefit.

Per discussion:
https://www.postgresql.org/message-id/20150514232132.GZ2523@alvh.no-ip.org

Authored by Emre Hasegeli and Álvaro.

(It's not clear to me why bootscanner.l has any #include lines at all.)
This commit is contained in:
Alvaro Herrera
2015-05-15 17:03:16 -03:00
parent 1e98fa0bf8
commit 26df7066cc
35 changed files with 129 additions and 95 deletions

View File

@@ -36,26 +36,6 @@
#define GIST_FETCH_PROC 9
#define GISTNProcs 9
/*
* strategy numbers for GiST opclasses that want to implement the old
* RTREE behavior.
*/
#define RTLeftStrategyNumber 1
#define RTOverLeftStrategyNumber 2
#define RTOverlapStrategyNumber 3
#define RTOverRightStrategyNumber 4
#define RTRightStrategyNumber 5
#define RTSameStrategyNumber 6
#define RTContainsStrategyNumber 7 /* for @> */
#define RTContainedByStrategyNumber 8 /* for <@ */
#define RTOverBelowStrategyNumber 9
#define RTBelowStrategyNumber 10
#define RTAboveStrategyNumber 11
#define RTOverAboveStrategyNumber 12
#define RTOldContainsStrategyNumber 13 /* for old spelling of @> */
#define RTOldContainedByStrategyNumber 14 /* for old spelling of <@ */
#define RTKNNSearchStrategyNumber 15
/*
* Page opaque data in a GiST index page.
*/

View File

@@ -430,7 +430,7 @@ typedef struct xl_btree_newroot
/*
* Operator strategy numbers for B-tree have been moved to access/skey.h,
* Operator strategy numbers for B-tree have been moved to access/stratnum.h,
* because many places need to use them in ScanKeyInit() calls.
*
* The strategy numbers are chosen so that we can commute them by

View File

@@ -15,31 +15,10 @@
#define SKEY_H
#include "access/attnum.h"
#include "access/stratnum.h"
#include "fmgr.h"
/*
* Strategy numbers identify the semantics that particular operators have
* with respect to particular operator classes. In some cases a strategy
* subtype (an OID) is used as further information.
*/
typedef uint16 StrategyNumber;
#define InvalidStrategy ((StrategyNumber) 0)
/*
* We define the strategy numbers for B-tree indexes here, to avoid having
* to import access/nbtree.h into a lot of places that shouldn't need it.
*/
#define BTLessStrategyNumber 1
#define BTLessEqualStrategyNumber 2
#define BTEqualStrategyNumber 3
#define BTGreaterEqualStrategyNumber 4
#define BTGreaterStrategyNumber 5
#define BTMaxStrategyNumber 5
/*
* A ScanKey represents the application of a comparison operator between
* a table or index column and a constant. When it's part of an array of

View File

@@ -0,0 +1,75 @@
/*-------------------------------------------------------------------------
*
* stratnum.h
* POSTGRES strategy number definitions.
*
*
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/access/stratnum.h
*
*-------------------------------------------------------------------------
*/
#ifndef STRATNUM_H
#define STRATNUM_H
/*
* Strategy numbers identify the semantics that particular operators have
* with respect to particular operator classes. In some cases a strategy
* subtype (an OID) is used as further information.
*/
typedef uint16 StrategyNumber;
#define InvalidStrategy ((StrategyNumber) 0)
/*
* Strategy numbers for B-tree indexes.
*/
#define BTLessStrategyNumber 1
#define BTLessEqualStrategyNumber 2
#define BTEqualStrategyNumber 3
#define BTGreaterEqualStrategyNumber 4
#define BTGreaterStrategyNumber 5
#define BTMaxStrategyNumber 5
/*
* Strategy numbers common to (some) GiST, SP-GiST and BRIN opclasses.
*
* The first few of these come from the R-Tree indexing method (hence the
* names); the others have been added over time as they have been needed.
*/
#define RTLeftStrategyNumber 1 /* for << */
#define RTOverLeftStrategyNumber 2 /* for &< */
#define RTOverlapStrategyNumber 3 /* for && */
#define RTOverRightStrategyNumber 4 /* for &> */
#define RTRightStrategyNumber 5 /* for >> */
#define RTSameStrategyNumber 6 /* for ~= */
#define RTContainsStrategyNumber 7 /* for @> */
#define RTContainedByStrategyNumber 8 /* for <@ */
#define RTOverBelowStrategyNumber 9 /* for &<| */
#define RTBelowStrategyNumber 10 /* for <<| */
#define RTAboveStrategyNumber 11 /* for |>> */
#define RTOverAboveStrategyNumber 12 /* for |&> */
#define RTOldContainsStrategyNumber 13 /* for old spelling of @> */
#define RTOldContainedByStrategyNumber 14 /* for old spelling of <@ */
#define RTKNNSearchStrategyNumber 15 /* for <-> (distance) */
#define RTContainsElemStrategyNumber 16 /* for range types @> elem */
#define RTAdjacentStrategyNumber 17 /* for -|- */
#define RTEqualStrategyNumber 18 /* for = */
#define RTNotEqualStrategyNumber 19 /* for != */
#define RTLessStrategyNumber 20 /* for < */
#define RTLessEqualStrategyNumber 21 /* for <= */
#define RTGreaterStrategyNumber 22 /* for > */
#define RTGreaterEqualStrategyNumber 23 /* for >= */
#define RTSubStrategyNumber 24 /* for inet >> */
#define RTSubOrEqualStrategyNumber 25 /* for inet <<= */
#define RTSuperStrategyNumber 26 /* for inet << */
#define RTSuperOrEqualStrategyNumber 27 /* for inet >>= */
#define RTMaxStrategyNumber 27
#endif /* STRATNUM_H */