LCOV - code coverage report
Current view: top level - src/include/utils - partcache.h (source / functions) Coverage Total Hit
Test: Code coverage Lines: 100.0 % 14 14
Test Date: 2026-01-26 10:56:24 Functions: 100.0 % 7 7
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  * partcache.h
       4              :  *
       5              :  * Copyright (c) 1996-2026, PostgreSQL Global Development Group
       6              :  *
       7              :  * src/include/utils/partcache.h
       8              :  *
       9              :  *-------------------------------------------------------------------------
      10              :  */
      11              : #ifndef PARTCACHE_H
      12              : #define PARTCACHE_H
      13              : 
      14              : #include "access/attnum.h"
      15              : #include "fmgr.h"
      16              : #include "nodes/parsenodes.h"
      17              : #include "nodes/pg_list.h"
      18              : #include "nodes/primnodes.h"
      19              : #include "partitioning/partdefs.h"
      20              : #include "utils/relcache.h"
      21              : 
      22              : /*
      23              :  * Information about the partition key of a relation
      24              :  */
      25              : typedef struct PartitionKeyData
      26              : {
      27              :         PartitionStrategy strategy; /* partitioning strategy */
      28              :         int16           partnatts;              /* number of columns in the partition key */
      29              :         AttrNumber *partattrs;          /* attribute numbers of columns in the
      30              :                                                                  * partition key or 0 if it's an expr */
      31              :         List       *partexprs;          /* list of expressions in the partitioning
      32              :                                                                  * key, one for each zero-valued partattrs */
      33              : 
      34              :         Oid                *partopfamily;       /* OIDs of operator families */
      35              :         Oid                *partopcintype;      /* OIDs of opclass declared input data types */
      36              :         FmgrInfo   *partsupfunc;        /* lookup info for support funcs */
      37              : 
      38              :         /* Partitioning collation per attribute */
      39              :         Oid                *partcollation;
      40              : 
      41              :         /* Type information per attribute */
      42              :         Oid                *parttypid;
      43              :         int32      *parttypmod;
      44              :         int16      *parttyplen;
      45              :         bool       *parttypbyval;
      46              :         char       *parttypalign;
      47              :         Oid                *parttypcoll;
      48              : }                       PartitionKeyData;
      49              : 
      50              : 
      51              : extern PartitionKey RelationGetPartitionKey(Relation rel);
      52              : extern List *RelationGetPartitionQual(Relation rel);
      53              : extern Expr *get_partition_qual_relid(Oid relid);
      54              : 
      55              : /*
      56              :  * PartitionKey inquiry functions
      57              :  */
      58              : static inline int
      59         1826 : get_partition_strategy(PartitionKey key)
      60              : {
      61         1826 :         return key->strategy;
      62              : }
      63              : 
      64              : static inline int
      65         1788 : get_partition_natts(PartitionKey key)
      66              : {
      67         1788 :         return key->partnatts;
      68              : }
      69              : 
      70              : static inline List *
      71         3460 : get_partition_exprs(PartitionKey key)
      72              : {
      73         3460 :         return key->partexprs;
      74              : }
      75              : 
      76              : /*
      77              :  * PartitionKey inquiry functions - one column
      78              :  */
      79              : static inline int16
      80           89 : get_partition_col_attnum(PartitionKey key, int col)
      81              : {
      82           89 :         return key->partattrs[col];
      83              : }
      84              : 
      85              : static inline Oid
      86         2556 : get_partition_col_typid(PartitionKey key, int col)
      87              : {
      88         2556 :         return key->parttypid[col];
      89              : }
      90              : 
      91              : static inline int32
      92         2529 : get_partition_col_typmod(PartitionKey key, int col)
      93              : {
      94         2529 :         return key->parttypmod[col];
      95              : }
      96              : 
      97              : static inline Oid
      98         2529 : get_partition_col_collation(PartitionKey key, int col)
      99              : {
     100         2529 :         return key->partcollation[col];
     101              : }
     102              : 
     103              : #endif                                                  /* PARTCACHE_H */
        

Generated by: LCOV version 2.3.2-1