Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postgres/src/include/replication/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 2 kB image not shown  

Quelle  conflict.h

  Sprache: C
 

/*-------------------------------------------------------------------------
 * conflict.h
 *    Exports for conflicts logging.
 *
 * Copyright (c) 2024-2025, PostgreSQL Global Development Group
 *
 *-------------------------------------------------------------------------
 */

#ifndef CONFLICT_H
#define CONFLICT_H

#include "access/xlogdefs.h"
#include "nodes/pg_list.h"
#include "utils/timestamp.h"

/* Avoid including execnodes.h here */
struct EState;
struct ResultRelInfo;
struct TupleTableSlot;


/*
 * Conflict types that could occur while applying remote changes.
 *
 * This enum is used in statistics collection (see
 * PgStat_StatSubEntry::conflict_count and
 * PgStat_BackendSubEntry::conflict_count) as well, therefore, when adding new
 * values or reordering existing ones, ensure to review and potentially adjust
 * the corresponding statistics collection codes.
 */

typedef enum
{
 /* The row to be inserted violates unique constraint */
 CT_INSERT_EXISTS,

 /* The row to be updated was modified by a different origin */
 CT_UPDATE_ORIGIN_DIFFERS,

 /* The updated row value violates unique constraint */
 CT_UPDATE_EXISTS,

 /* The row to be updated is missing */
 CT_UPDATE_MISSING,

 /* The row to be deleted was modified by a different origin */
 CT_DELETE_ORIGIN_DIFFERS,

 /* The row to be deleted is missing */
 CT_DELETE_MISSING,

 /* The row to be inserted/updated violates multiple unique constraint */
 CT_MULTIPLE_UNIQUE_CONFLICTS,

 /*
  * Other conflicts, such as exclusion constraint violations, involve more
  * complex rules than simple equality checks. These conflicts are left for
  * future improvements.
 */

} ConflictType;

#define CONFLICT_NUM_TYPES (CT_MULTIPLE_UNIQUE_CONFLICTS + 1)

/*
 * Information for the existing local row that caused the conflict.
 */

typedef struct ConflictTupleInfo
{
 struct TupleTableSlot *slot; /* tuple slot holding the conflicting
 * local tuple */

 Oid   indexoid;  /* OID of the index where the conflict
 * occurred */

 TransactionId xmin;   /* transaction ID of the modification causing
 * the conflict */

 RepOriginId origin;   /* origin identifier of the modification */
 TimestampTz ts;    /* timestamp of when the modification on the
 * conflicting local row occurred */

} ConflictTupleInfo;

extern bool GetTupleTransactionInfo(struct TupleTableSlot *localslot,
         TransactionId *xmin,
         RepOriginId *localorigin,
         TimestampTz *localts);
extern void ReportApplyConflict(struct EState *estate, struct ResultRelInfo *relinfo,
        int elevel, ConflictType type,
        struct TupleTableSlot *searchslot,
        struct TupleTableSlot *remoteslot,
        List *conflicttuples);
extern void InitConflictIndexes(struct ResultRelInfo *relInfo);

#endif

Messung V0.5 in Prozent
C=83 H=100 G=91

¤ Dauer der Verarbeitung: 0.10 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.