{
  "name": "Source Atlas",
  "description": "PostgreSQL functions, and where this site explains each one: the reverse of a code trail.",
  "url": "https://sudohulk.com/atlas",
  "postgres": "18.3",
  "tag": "REL_18_3",
  "repository": "https://github.com/postgres/postgres",
  "licence": "https://www.postgresql.org/about/licence/",
  "symbols": [
    {
      "symbol": "pgfdw_inval_callback",
      "file": "contrib/postgres_fdw/connection.c",
      "line": 1295,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/contrib/postgres_fdw/connection.c#L1295",
      "atlas": "https://sudohulk.com/atlas#pgfdw_inval_callback",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Keeping your own cache honest",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#keeping-your-own-cache-honest",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "InvalidateShippableCacheCallback",
      "file": "contrib/postgres_fdw/shippable.c",
      "line": 64,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/contrib/postgres_fdw/shippable.c#L64",
      "atlas": "https://sudohulk.com/atlas#InvalidateShippableCacheCallback",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Keeping your own cache honest",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#keeping-your-own-cache-honest",
          "as": "link"
        }
      ]
    },
    {
      "symbol": "AtStart_Cache",
      "file": "src/backend/access/transam/xact.c",
      "line": 1166,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/access/transam/xact.c#L1166",
      "atlas": "https://sudohulk.com/atlas#AtStart_Cache",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "CommitTransaction",
      "file": "src/backend/access/transam/xact.c",
      "line": 2227,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/access/transam/xact.c#L2227",
      "atlas": "https://sudohulk.com/atlas#CommitTransaction",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "ProcessCatchupInterrupt",
      "file": "src/backend/storage/ipc/sinval.c",
      "line": 173,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/storage/ipc/sinval.c#L173",
      "atlas": "https://sudohulk.com/atlas#ProcessCatchupInterrupt",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "ReceiveSharedInvalidMessages",
      "file": "src/backend/storage/ipc/sinval.c",
      "line": 68,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/storage/ipc/sinval.c#L68",
      "atlas": "https://sudohulk.com/atlas#ReceiveSharedInvalidMessages",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Reading the ring before trusting the cache",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#reading-the-ring-before-trusting-the-cache",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "SICleanupQueue",
      "file": "src/backend/storage/ipc/sinvaladt.c",
      "line": 576,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/storage/ipc/sinvaladt.c#L576",
      "atlas": "https://sudohulk.com/atlas#SICleanupQueue",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "When the ring fills up",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#when-the-ring-fills-up",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "SIGetDataEntries",
      "file": "src/backend/storage/ipc/sinvaladt.c",
      "line": 472,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/storage/ipc/sinvaladt.c#L472",
      "atlas": "https://sudohulk.com/atlas#SIGetDataEntries",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Reading the ring before trusting the cache",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#reading-the-ring-before-trusting-the-cache",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "SIInsertDataEntries",
      "file": "src/backend/storage/ipc/sinvaladt.c",
      "line": 369,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/storage/ipc/sinvaladt.c#L369",
      "atlas": "https://sudohulk.com/atlas#SIInsertDataEntries",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "The ring of messages",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#the-ring-of-messages",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "LockRelationOid",
      "file": "src/backend/storage/lmgr/lmgr.c",
      "line": 106,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/storage/lmgr/lmgr.c#L106",
      "atlas": "https://sudohulk.com/atlas#LockRelationOid",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Reading the ring before trusting the cache",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#reading-the-ring-before-trusting-the-cache",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "AcceptInvalidationMessages",
      "file": "src/backend/utils/cache/inval.c",
      "line": 929,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/utils/cache/inval.c#L929",
      "atlas": "https://sudohulk.com/atlas#AcceptInvalidationMessages",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Reading the ring before trusting the cache",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#reading-the-ring-before-trusting-the-cache",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "AtEOXact_Inval",
      "file": "src/backend/utils/cache/inval.c",
      "line": 1198,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/utils/cache/inval.c#L1198",
      "atlas": "https://sudohulk.com/atlas#AtEOXact_Inval",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Collecting changes until commit",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#collecting-changes-until-commit",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "CacheRegisterRelcacheCallback",
      "file": "src/backend/utils/cache/inval.c",
      "line": 1857,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/utils/cache/inval.c#L1857",
      "atlas": "https://sudohulk.com/atlas#CacheRegisterRelcacheCallback",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Keeping your own cache honest",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#keeping-your-own-cache-honest",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "CacheRegisterSyscacheCallback",
      "file": "src/backend/utils/cache/inval.c",
      "line": 1815,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/utils/cache/inval.c#L1815",
      "atlas": "https://sudohulk.com/atlas#CacheRegisterSyscacheCallback",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Keeping your own cache honest",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#keeping-your-own-cache-honest",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "CommandEndInvalidationMessages",
      "file": "src/backend/utils/cache/inval.c",
      "line": 1408,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/utils/cache/inval.c#L1408",
      "atlas": "https://sudohulk.com/atlas#CommandEndInvalidationMessages",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Collecting changes until commit",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#collecting-changes-until-commit",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    },
    {
      "symbol": "InvalidateSystemCachesExtended",
      "file": "src/backend/utils/cache/inval.c",
      "line": 784,
      "source": "https://github.com/postgres/postgres/blob/REL_18_3/src/backend/utils/cache/inval.c#L784",
      "atlas": "https://sudohulk.com/atlas#InvalidateSystemCachesExtended",
      "explainedIn": [
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "When the ring fills up",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#when-the-ring-fills-up",
          "as": "link"
        },
        {
          "title": "How PostgreSQL tells every connection its cache is stale",
          "section": "Dig deeper",
          "url": "https://sudohulk.com/writing/postgres-cache-invalidation#dig-deeper",
          "as": "trail"
        }
      ]
    }
  ]
}