LCOV - code coverage report
Current view: top level - src/include/utils - partcache.h (source / functions) Hit Total Coverage
Test: PostgreSQL 12beta2 Lines: 14 14 100.0 %
Date: 2019-06-18 07:06:57 Functions: 7 7 100.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.13