LCOV - code coverage report
Current view: top level - src/include/optimizer - extendplan.h (source / functions) Hit Total Coverage
Test: PostgreSQL 19devel Lines: 3 4 75.0 %
Date: 2025-10-10 18:17:38 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*-------------------------------------------------------------------------
       2             :  *
       3             :  * extendplan.h
       4             :  *    Extend core planner objects with additional private state
       5             :  *
       6             :  *
       7             :  * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
       8             :  * Portions Copyright (c) 1994, Regents of the University of California
       9             :  *
      10             :  * src/include/optimizer/extendplan.h
      11             :  *
      12             :  *-------------------------------------------------------------------------
      13             :  */
      14             : #ifndef EXTENDPLAN_H
      15             : #define EXTENDPLAN_H
      16             : 
      17             : #include "nodes/pathnodes.h"
      18             : 
      19             : extern int  GetPlannerExtensionId(const char *extension_name);
      20             : 
      21             : /*
      22             :  * Get extension-specific state from a PlannerGlobal.
      23             :  */
      24             : static inline void *
      25             : GetPlannerGlobalExtensionState(PlannerGlobal *glob, int extension_id)
      26             : {
      27             :     Assert(extension_id >= 0);
      28             : 
      29             :     if (extension_id >= glob->extension_state_allocated)
      30             :         return NULL;
      31             : 
      32             :     return glob->extension_state[extension_id];
      33             : }
      34             : 
      35             : /*
      36             :  * Get extension-specific state from a PlannerInfo.
      37             :  */
      38             : static inline void *
      39       14886 : GetPlannerInfoExtensionState(PlannerInfo *root, int extension_id)
      40             : {
      41             :     Assert(extension_id >= 0);
      42             : 
      43       14886 :     if (extension_id >= root->extension_state_allocated)
      44           0 :         return NULL;
      45             : 
      46       14886 :     return root->extension_state[extension_id];
      47             : }
      48             : 
      49             : /*
      50             :  * Get extension-specific state from a PlannerInfo.
      51             :  */
      52             : static inline void *
      53             : GetRelOptInfoExtensionState(RelOptInfo *rel, int extension_id)
      54             : {
      55             :     Assert(extension_id >= 0);
      56             : 
      57             :     if (extension_id >= rel->extension_state_allocated)
      58             :         return NULL;
      59             : 
      60             :     return rel->extension_state[extension_id];
      61             : }
      62             : 
      63             : /* Functions to store private state into various planner objects */
      64             : extern void SetPlannerGlobalExtensionState(PlannerGlobal *glob,
      65             :                                            int extension_id,
      66             :                                            void *opaque);
      67             : extern void SetPlannerInfoExtensionState(PlannerInfo *root, int extension_id,
      68             :                                          void *opaque);
      69             : extern void SetRelOptInfoExtensionState(RelOptInfo *rel, int extension_id,
      70             :                                         void *opaque);
      71             : 
      72             : #endif

Generated by: LCOV version 1.16