PostgreSQL Source Code git master
Data Structures | Typedefs | Functions
partcache.h File Reference
#include "access/attnum.h"
#include "fmgr.h"
#include "nodes/parsenodes.h"
#include "nodes/pg_list.h"
#include "nodes/primnodes.h"
#include "partitioning/partdefs.h"
#include "utils/relcache.h"
Include dependency graph for partcache.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct   PartitionKeyData
 

Typedefs

 

Functions

 
 
 
 
static int  get_partition_natts (PartitionKey key)
 
 
 
static Oid  get_partition_col_typid (PartitionKey key, int col)
 
 
 

Typedef Documentation

PartitionKeyData

Function Documentation

get_partition_col_attnum()

static int16 get_partition_col_attnum ( PartitionKey  key,
int  col 
)
inlinestatic

Definition at line 80 of file partcache.h.

81{
82 return key->partattrs[col];
83}

References sort-test::key.

Referenced by ExecBuildSlotPartitionKeyDescription(), and has_partition_attrs().

get_partition_col_collation()

static Oid get_partition_col_collation ( PartitionKey  key,
int  col 
)
inlinestatic

Definition at line 98 of file partcache.h.

99{
100 return key->partcollation[col];
101}

References sort-test::key.

Referenced by transformPartitionBound(), and transformPartitionRangeBounds().

get_partition_col_typid()

static Oid get_partition_col_typid ( PartitionKey  key,
int  col 
)
inlinestatic

Definition at line 86 of file partcache.h.

87{
88 return key->parttypid[col];
89}

References sort-test::key.

Referenced by ExecBuildSlotPartitionKeyDescription(), transformPartitionBound(), and transformPartitionRangeBounds().

get_partition_col_typmod()

static int32 get_partition_col_typmod ( PartitionKey  key,
int  col 
)
inlinestatic

Definition at line 92 of file partcache.h.

93{
94 return key->parttypmod[col];
95}

References sort-test::key.

Referenced by transformPartitionBound(), and transformPartitionRangeBounds().

get_partition_exprs()

static List * get_partition_exprs ( PartitionKey  key )
inlinestatic

Definition at line 71 of file partcache.h.

72{
73 return key->partexprs;
74}

References sort-test::key.

Referenced by has_partition_attrs(), transformPartitionBound(), and transformPartitionRangeBounds().

get_partition_natts()

static int get_partition_natts ( PartitionKey  key )
inlinestatic

Definition at line 65 of file partcache.h.

66{
67 return key->partnatts;
68}

References sort-test::key.

Referenced by ExecBuildSlotPartitionKeyDescription(), has_partition_attrs(), and transformPartitionBound().

get_partition_qual_relid()

Expr * get_partition_qual_relid ( Oid  relid )

Definition at line 299 of file partcache.c.

300{
301 Expr *result = NULL;
302
303 /* Do the work only if this relation exists and is a partition. */
304 if (get_rel_relispartition(relid))
305 {
307 List *and_args;
308
309 and_args = generate_partition_qual(rel);
310
311 /* Convert implicit-AND list format to boolean expression */
312 if (and_args == NIL)
313 result = NULL;
314 else if (list_length(and_args) > 1)
315 result = makeBoolExpr(AND_EXPR, and_args, -1);
316 else
317 result = linitial(and_args);
318
319 /* Keep the lock, to allow safe deparsing against the rel by caller. */
321 }
322
323 return result;
324}
#define NoLock
Definition: lockdefs.h:34
#define AccessShareLock
Definition: lockdefs.h:36
bool get_rel_relispartition(Oid relid)
Definition: lsyscache.c:2194
Expr * makeBoolExpr(BoolExprType boolop, List *args, int location)
Definition: makefuncs.c:420
static List * generate_partition_qual(Relation rel)
Definition: partcache.c:337
static int list_length(const List *l)
Definition: pg_list.h:152
#define NIL
Definition: pg_list.h:68
#define linitial(l)
Definition: pg_list.h:178
@ AND_EXPR
Definition: primnodes.h:963
void relation_close(Relation relation, LOCKMODE lockmode)
Definition: relation.c:205
Relation relation_open(Oid relationId, LOCKMODE lockmode)
Definition: relation.c:47
Definition: primnodes.h:189
Definition: pg_list.h:54
Definition: rel.h:56

References AccessShareLock, AND_EXPR, generate_partition_qual(), get_rel_relispartition(), linitial, list_length(), makeBoolExpr(), NIL, NoLock, relation_close(), and relation_open().

Referenced by pg_get_partconstrdef_string(), and pg_get_partition_constraintdef().

get_partition_strategy()

static int get_partition_strategy ( PartitionKey  key )
inlinestatic

Definition at line 59 of file partcache.h.

60{
61 return key->strategy;
62}

References sort-test::key.

Referenced by transformPartitionBound().

RelationGetPartitionKey()

PartitionKey RelationGetPartitionKey ( Relation  rel )

Definition at line 51 of file partcache.c.

52{
53 if (rel->rd_rel->relkind != RELKIND_PARTITIONED_TABLE)
54 return NULL;
55
56 if (unlikely(rel->rd_partkey == NULL))
58
59 return rel->rd_partkey;
60}
#define unlikely(x)
Definition: c.h:402
static void RelationBuildPartitionKey(Relation relation)
Definition: partcache.c:78
PartitionKey rd_partkey
Definition: rel.h:126
Form_pg_class rd_rel
Definition: rel.h:111

References RelationData::rd_partkey, RelationData::rd_rel, RelationBuildPartitionKey(), and unlikely.

Referenced by check_new_partition_bound(), CreatePartitionPruneState(), DefineIndex(), ExecBuildSlotPartitionKeyDescription(), ExecInitPartitionDispatchInfo(), find_partition_scheme(), get_qual_for_hash(), get_qual_for_list(), get_qual_for_range(), get_qual_from_partbound(), has_partition_attrs(), InitExecPartitionPruneContexts(), RelationBuildPartitionDesc(), satisfies_hash_partition(), set_baserel_partition_key_exprs(), transformPartitionBound(), transformPartitionCmd(), and transformPartitionRangeBounds().

RelationGetPartitionQual()

List * RelationGetPartitionQual ( Relation  rel )

Definition at line 277 of file partcache.c.

278{
279 /* Quick exit */
280 if (!rel->rd_rel->relispartition)
281 return NIL;
282
283 return generate_partition_qual(rel);
284}

References generate_partition_qual(), NIL, and RelationData::rd_rel.

Referenced by ATExecAttachPartition(), DetachAddConstraintIfNeeded(), ExecPartitionCheck(), and set_baserel_partition_constraint().

AltStyle によって変換されたページ (->オリジナル) /