products/Sources/formale Sprachen/C/Postgres/src/backend/replication/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 26 kB image not shown  

Quelle  partprune.h

  Sprache: C
 

/*-------------------------------------------------------------------------
 *
 * partprune.h
 *   prototypes for partprune.c
 *
 *
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/partitioning/partprune.h
 *
 *-------------------------------------------------------------------------
 */

#ifndef PARTPRUNE_H
#define PARTPRUNE_H

#include "nodes/execnodes.h"
#include "partitioning/partdefs.h"

struct PlannerInfo;    /* avoid including pathnodes.h here */
struct RelOptInfo;


/*
 * PartitionPruneContext
 *  Stores information needed at runtime for pruning computations
 *  related to a single partitioned table.
 *
 * strategy   Partition strategy, e.g. LIST, RANGE, HASH.
 * partnatts  Number of columns in the partition key.
 * nparts   Number of partitions in this partitioned table.
 * boundinfo  Partition boundary info for the partitioned table.
 * partcollation Array of partnatts elements, storing the collations of the
 *     partition key columns.
 * partsupfunc  Array of FmgrInfos for the comparison or hashing functions
 *     associated with the partition keys (partnatts elements).
 *     (This points into the partrel's partition key, typically.)
 * stepcmpfuncs  Array of FmgrInfos for the comparison or hashing function
 *     for each pruning step and partition key.
 * ppccontext  Memory context holding this PartitionPruneContext's
 *     subsidiary data, such as the FmgrInfos.
 * planstate  Points to the parent plan node's PlanState when called
 *     during execution; NULL when called from the planner.
 * exprcontext  ExprContext to use when evaluating pruning expressions
 * exprstates  Array of ExprStates, indexed as per PruneCxtStateIdx; one
 *     for each partition key in each pruning step.  Allocated if
 *     planstate is non-NULL, otherwise NULL.
 */

typedef struct PartitionPruneContext
{
 char  strategy;
 int   partnatts;
 int   nparts;
 PartitionBoundInfo boundinfo;
 Oid     *partcollation;
 FmgrInfo   *partsupfunc;
 FmgrInfo   *stepcmpfuncs;
 MemoryContext ppccontext;
 PlanState  *planstate;
 ExprContext *exprcontext;
 ExprState **exprstates;
} PartitionPruneContext;

/*
 * PruneCxtStateIdx() computes the correct index into the stepcmpfuncs[]
 * and exprstates[] arrays for step step_id and partition key column keyno.
 * (Note: there is code that assumes the entries for a given step are
 * sequential, so this is not chosen freely.)
 */

#define PruneCxtStateIdx(partnatts, step_id, keyno) \
 ((partnatts) * (step_id) + (keyno))

extern int make_partition_pruneinfo(struct PlannerInfo *root,
          struct RelOptInfo *parentrel,
          List *subpaths,
          List *prunequal);
extern Bitmapset *prune_append_rel_partitions(struct RelOptInfo *rel);
extern Bitmapset *get_matching_partitions(PartitionPruneContext *context,
            List *pruning_steps);

#endif       /* PARTPRUNE_H */

Messung V0.5 in Prozent
C=95 H=100 G=97

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet am  2026-08-06) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.