LCOV - code coverage report
Current view: top level - src/include/utils - partcache.h (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 100.0 % 14 14
Test Date: 2026-03-03 13:15:30 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         6787 : get_partition_strategy(PartitionKey key)
      60              : {
      61         6787 :     return key->strategy;
      62              : }
      63              : 
      64              : static inline int
      65         6659 : get_partition_natts(PartitionKey key)
      66              : {
      67         6659 :     return key->partnatts;
      68              : }
      69              : 
      70              : static inline List *
      71        12331 : get_partition_exprs(PartitionKey key)
      72              : {
      73        12331 :     return key->partexprs;
      74              : }
      75              : 
      76              : /*
      77              :  * PartitionKey inquiry functions - one column
      78              :  */
      79              : static inline int16
      80          291 : get_partition_col_attnum(PartitionKey key, int col)
      81              : {
      82          291 :     return key->partattrs[col];
      83              : }
      84              : 
      85              : static inline Oid
      86         9185 : get_partition_col_typid(PartitionKey key, int col)
      87              : {
      88         9185 :     return key->parttypid[col];
      89              : }
      90              : 
      91              : static inline int32
      92         9102 : get_partition_col_typmod(PartitionKey key, int col)
      93              : {
      94         9102 :     return key->parttypmod[col];
      95              : }
      96              : 
      97              : static inline Oid
      98         9102 : get_partition_col_collation(PartitionKey key, int col)
      99              : {
     100         9102 :     return key->partcollation[col];
     101              : }
     102              : 
     103              : #endif                          /* PARTCACHE_H */
        

Generated by: LCOV version 2.0-1