vscode-clangd icon indicating copy to clipboard operation
vscode-clangd copied to clipboard

Clangd doesn't recognize standard headers

Open CodeZHXS opened this issue 1 year ago • 4 comments

I'm trying to compile Postgres-17 using bear to generate compile_commands.json:

./configure --enable-debug --enable-cassert CFLAGS=-O0
bear -- make -j

This successfully produces the compile_commands.json file in the directory.

When using the ms-c/c++ extension in VSCode, everything works fine once I specify the path. However, after disabling the ms-c/c++ plugin and enabling the clangd plugin, I encounter errors. It appears that certain headers, such as stdbool.h, are not being recognized correctly. For reference, stdbool.h is located at /usr/lib/gcc/x86_64-linux-gnu/11/include.

111

tried adding the following to my settings.json:

"clangd.arguments": ["--query-driver=/usr/bin/gcc"]

But this did not resolve the issue.

How can I fix this?

Logs

I[04:00:57.297] clangd version 18.1.3 (https://github.com/llvm/llvm-project c13b7485b87909fcf739f62cfa382b55407433c0)
I[04:00:57.297] Features: linux+grpc
I[04:00:57.297] PID: 228676
I[04:00:57.297] Working directory: /root/src/postgres
I[04:00:57.297] argv[0]: /root/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/bin/clangd
I[04:00:57.297] argv[1]: --log=verbose
V[04:00:57.297] User config file is /root/.config/clangd/config.yaml
I[04:00:57.297] Starting LSP over stdin/stdout
V[04:00:57.301] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"markdown":{"parser":"marked","version":"1.1.0"},"positionEncodings":["utf-16"],"regularExpressions":{"engine":"ECMAScript","version":"ES2020"},"staleRequestSupport":{"cancel":true,"retryOnContentModified":["textDocument/semanticTokens/full","textDocument/semanticTokens/range","textDocument/semanticTokens/full/delta"]}},"notebookDocument":{"synchronization":{"dynamicRegistration":true,"executionSummarySupport":true}},"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"dynamicRegistration":true,"honorsChangeAnnotations":false,"isPreferredSupport":true,"resolveSupport":{"properties":["edit"]}},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"insertTextModeSupport":{"valueSet":[1,2]},"labelDetailsSupport":true,"preselectSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]},"contextSupport":true,"dynamicRegistration":true,"editsNearCursor":true,"insertTextMode":2},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"diagnostic":{"dynamicRegistration":true,"relatedDocumentSupport":false},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"labelSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"foldingRange":{"collapsedText":false},"foldingRangeKind":{"valueSet":["comment","imports","region"]},"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"inactiveRegionsCapabilities":{"inactiveRegions":true},"inlayHint":{"dynamicRegistration":true,"resolveSupport":{"properties":["tooltip","textEdits","label.tooltip","label.location","label.command"]}},"inlineValue":{"dynamicRegistration":true},"linkedEditingRange":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"codeDescriptionSupport":true,"dataSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":false},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"honorsChangeAnnotations":true,"prepareSupport":true,"prepareSupportDefaultBehavior":1},"selectionRange":{"dynamicRegistration":true},"semanticTokens":{"augmentsSyntaxTokens":true,"dynamicRegistration":true,"formats":["relative"],"multilineTokenSupport":false,"overlappingTokenSupport":false,"requests":{"full":{"delta":true},"range":true},"serverCancelSupport":true,"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","operator","decorator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"typeHierarchy":{"dynamicRegistration":true}},"window":{"showDocument":{"support":true},"showMessage":{"messageActionItem":{"additionalPropertiesSupport":true}},"workDoneProgress":true},"workspace":{"applyEdit":true,"codeLens":{"refreshSupport":true},"configuration":true,"diagnostics":{"refreshSupport":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":true},"executeCommand":{"dynamicRegistration":true},"fileOperations":{"didCreate":true,"didDelete":true,"didRename":true,"dynamicRegistration":true,"willCreate":true,"willDelete":true,"willRename":true},"inlayHint":{"refreshSupport":true},"inlineValue":{"refreshSupport":true},"semanticTokens":{"refreshSupport":true},"symbol":{"dynamicRegistration":true,"resolveSupport":{"properties":["location.range"]},"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"changeAnnotationSupport":{"groupsOnLabel":true},"documentChanges":true,"failureHandling":"textOnlyTransactional","normalizesLineEndings":true,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"Visual Studio Code","version":"1.94.0"},"initializationOptions":{"clangdFileStatus":true,"fallbackFlags":[]},"locale":"zh-cn","processId":228634,"rootPath":"/root/src/postgres","rootUri":"file:///root/src/postgres","trace":"off","workspaceFolders":[{"name":"postgres","uri":"file:///root/src/postgres"}]}}

I[04:00:57.301] <-- initialize(0)
I[04:00:57.302] --> reply:initialize(0) 1 ms
V[04:00:57.302] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"compilationDatabase":{"automaticReload":true},"completionProvider":{"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inactiveRegionsProvider":true,"inlayHintProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","definition","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","usedAsMutablePointer","constructorOrDestructor","userDefined","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","modifier","operator","bracket","label","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"standardTypeHierarchyProvider":true,"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 18.1.3 (https://github.com/llvm/llvm-project c13b7485b87909fcf739f62cfa382b55407433c0) linux+grpc x86_64-unknown-linux-gnu"}}}

V[04:00:57.320] <<< {"jsonrpc":"2.0","method":"initialized","params":{}}

I[04:00:57.320] <-- initialized
V[04:00:57.329] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"/*-------------------------------------------------------------------------\n *\n * bufmgr.h\n *\t  POSTGRES buffer manager definitions.\n *\n *\n * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group\n * Portions Copyright (c) 1994, Regents of the University of California\n *\n * src/include/storage/bufmgr.h\n *\n *-------------------------------------------------------------------------\n */\n#ifndef BUFMGR_H\n#define BUFMGR_H\n\n#include \"port/pg_iovec.h\"\n#include \"storage/block.h\"\n#include \"storage/buf.h\"\n#include \"storage/bufpage.h\"\n#include \"storage/relfilelocator.h\"\n#include \"utils/relcache.h\"\n#include \"utils/snapmgr.h\"\n\ntypedef void *Block;\n\n/*\n * Possible arguments for GetAccessStrategy().\n *\n * If adding a new BufferAccessStrategyType, also add a new IOContext so\n * IO statistics using this strategy are tracked.\n */\ntypedef enum BufferAccessStrategyType\n{\n\tBAS_NORMAL,\t\t\t\t\t/* Normal random access */\n\tBAS_BULKREAD,\t\t\t\t/* Large read-only scan (hint bit updates are\n\t\t\t\t\t\t\t\t * ok) */\n\tBAS_BULKWRITE,\t\t\t\t/* Large multi-block write (e.g. COPY IN) */\n\tBAS_VACUUM,\t\t\t\t\t/* VACUUM */\n} BufferAccessStrategyType;\n\n/* Possible modes for ReadBufferExtended() */\ntypedef enum\n{\n\tRBM_NORMAL,\t\t\t\t\t/* Normal read */\n\tRBM_ZERO_AND_LOCK,\t\t\t/* Don't read from disk, caller will\n\t\t\t\t\t\t\t\t * initialize. Also locks the page. */\n\tRBM_ZERO_AND_CLEANUP_LOCK,\t/* Like RBM_ZERO_AND_LOCK, but locks the page\n\t\t\t\t\t\t\t\t * in \"cleanup\" mode */\n\tRBM_ZERO_ON_ERROR,\t\t\t/* Read, but return an all-zeros page on error */\n\tRBM_NORMAL_NO_LOG,\t\t\t/* Don't log page as invalid during WAL\n\t\t\t\t\t\t\t\t * replay; otherwise same as RBM_NORMAL */\n} ReadBufferMode;\n\n/*\n * Type returned by PrefetchBuffer().\n */\ntypedef struct PrefetchBufferResult\n{\n\tBuffer\t\trecent_buffer;\t/* If valid, a hit (recheck needed!) */\n\tbool\t\tinitiated_io;\t/* If true, a miss resulting in async I/O */\n} PrefetchBufferResult;\n\n/*\n * Flags influencing the behaviour of ExtendBufferedRel*\n */\ntypedef enum ExtendBufferedFlags\n{\n\t/*\n\t * Don't acquire extension lock. This is safe only if the relation isn't\n\t * shared, an access exclusive lock is held or if this is the startup\n\t * process.\n\t */\n\tEB_SKIP_EXTENSION_LOCK = (1 << 0),\n\n\t/* Is this extension part of recovery? */\n\tEB_PERFORMING_RECOVERY = (1 << 1),\n\n\t/*\n\t * Should the fork be created if it does not currently exist? This likely\n\t * only ever makes sense for relation forks.\n\t */\n\tEB_CREATE_FORK_IF_NEEDED = (1 << 2),\n\n\t/* Should the first (possibly only) return buffer be returned locked? */\n\tEB_LOCK_FIRST = (1 << 3),\n\n\t/* Should the smgr size cache be cleared? */\n\tEB_CLEAR_SIZE_CACHE = (1 << 4),\n\n\t/* internal flags follow */\n\tEB_LOCK_TARGET = (1 << 5),\n}\t\t\tExtendBufferedFlags;\n\n/*\n * Some functions identify relations either by relation or smgr +\n * relpersistence.  Used via the BMR_REL()/BMR_SMGR() macros below.  This\n * allows us to use the same function for both recovery and normal operation.\n */\ntypedef struct BufferManagerRelation\n{\n\tRelation\trel;\n\tstruct SMgrRelationData *smgr;\n\tchar\t\trelpersistence;\n} BufferManagerRelation;\n\n#define BMR_REL(p_rel) ((BufferManagerRelation){.rel = p_rel})\n#define BMR_SMGR(p_smgr, p_relpersistence) ((BufferManagerRelation){.smgr = p_smgr, .relpersistence = p_relpersistence})\n\n/* Zero out page if reading fails. */\n#define READ_BUFFERS_ZERO_ON_ERROR (1 << 0)\n/* Call smgrprefetch() if I/O necessary. */\n#define READ_BUFFERS_ISSUE_ADVICE (1 << 1)\n\nstruct ReadBuffersOperation\n{\n\t/*\n\t * The following members should be set by the caller.  If only smgr is\n\t * provided without rel, then smgr_persistence can be set to override the\n\t * default assumption of RELPERSISTENCE_PERMANENT.\n\t */\n\tRelation\trel;\n\tstruct SMgrRelationData *smgr;\n\tchar\t\tsmgr_persistence;\n\tForkNumber\tforknum;\n\tBufferAccessStrategy strategy;\n\n\t/*\n\t * The following private members are private state for communication\n\t * between StartReadBuffers() and WaitReadBuffers(), initialized only if\n\t * an actual read is required, and should not be modified.\n\t */\n\tBuffer\t   *buffers;\n\tBlockNumber blocknum;\n\tint\t\t\tflags;\n\tint16\t\tnblocks;\n\tint16\t\tio_buffers_len;\n};\n\ntypedef struct ReadBuffersOperation ReadBuffersOperation;\n\n/* forward declared, to avoid having to expose buf_internals.h here */\nstruct WritebackContext;\n\n/* forward declared, to avoid including smgr.h here */\nstruct SMgrRelationData;\n\n/* in globals.c ... this duplicates miscadmin.h */\nextern PGDLLIMPORT int NBuffers;\n\n/* in bufmgr.c */\nextern PGDLLIMPORT bool zero_damaged_pages;\nextern PGDLLIMPORT int bgwriter_lru_maxpages;\nextern PGDLLIMPORT double bgwriter_lru_multiplier;\nextern PGDLLIMPORT bool track_io_timing;\n\n/* only applicable when prefetching is available */\n#ifdef USE_PREFETCH\n#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 1\n#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 10\n#else\n#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 0\n#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 0\n#endif\nextern PGDLLIMPORT int effective_io_concurrency;\nextern PGDLLIMPORT int maintenance_io_concurrency;\n\n#define MAX_IO_COMBINE_LIMIT PG_IOV_MAX\n#define DEFAULT_IO_COMBINE_LIMIT Min(MAX_IO_COMBINE_LIMIT, (128 * 1024) / BLCKSZ)\nextern PGDLLIMPORT int io_combine_limit;\n\nextern PGDLLIMPORT int checkpoint_flush_after;\nextern PGDLLIMPORT int backend_flush_after;\nextern PGDLLIMPORT int bgwriter_flush_after;\n\n/* in buf_init.c */\nextern PGDLLIMPORT char *BufferBlocks;\n\n/* in localbuf.c */\nextern PGDLLIMPORT int NLocBuffer;\nextern PGDLLIMPORT Block *LocalBufferBlockPointers;\nextern PGDLLIMPORT int32 *LocalRefCount;\n\n/* upper limit for effective_io_concurrency */\n#define MAX_IO_CONCURRENCY 1000\n\n/* special block number for ReadBuffer() */\n#define P_NEW\tInvalidBlockNumber\t/* grow the file to get a new page */\n\n/*\n * Buffer content lock modes (mode argument for LockBuffer())\n */\n#define BUFFER_LOCK_UNLOCK\t\t0\n#define BUFFER_LOCK_SHARE\t\t1\n#define BUFFER_LOCK_EXCLUSIVE\t2\n\n\n/*\n * prototypes for functions in bufmgr.c\n */\nextern PrefetchBufferResult PrefetchSharedBuffer(struct SMgrRelationData *smgr_reln,\n\t\t\t\t\t\t\t\t\t\t\t\t ForkNumber forkNum,\n\t\t\t\t\t\t\t\t\t\t\t\t BlockNumber blockNum);\nextern PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum,\n\t\t\t\t\t\t\t\t\t\t   BlockNumber blockNum);\nextern bool ReadRecentBuffer(RelFileLocator rlocator, ForkNumber forkNum,\n\t\t\t\t\t\t\t BlockNumber blockNum, Buffer recent_buffer);\nextern Buffer ReadBuffer(Relation reln, BlockNumber blockNum);\nextern Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum,\n\t\t\t\t\t\t\t\t BlockNumber blockNum, ReadBufferMode mode,\n\t\t\t\t\t\t\t\t BufferAccessStrategy strategy);\nextern Buffer ReadBufferWithoutRelcache(RelFileLocator rlocator,\n\t\t\t\t\t\t\t\t\t\tForkNumber forkNum, BlockNumber blockNum,\n\t\t\t\t\t\t\t\t\t\tReadBufferMode mode, BufferAccessStrategy strategy,\n\t\t\t\t\t\t\t\t\t\tbool permanent);\n\nextern bool StartReadBuffer(ReadBuffersOperation *operation,\n\t\t\t\t\t\t\tBuffer *buffer,\n\t\t\t\t\t\t\tBlockNumber blocknum,\n\t\t\t\t\t\t\tint flags);\nextern bool StartReadBuffers(ReadBuffersOperation *operation,\n\t\t\t\t\t\t\t Buffer *buffers,\n\t\t\t\t\t\t\t BlockNumber blockNum,\n\t\t\t\t\t\t\t int *nblocks,\n\t\t\t\t\t\t\t int flags);\nextern void WaitReadBuffers(ReadBuffersOperation *operation);\n\nextern void ReleaseBuffer(Buffer buffer);\nextern void UnlockReleaseBuffer(Buffer buffer);\nextern bool BufferIsExclusiveLocked(Buffer buffer);\nextern bool BufferIsDirty(Buffer buffer);\nextern void MarkBufferDirty(Buffer buffer);\nextern void IncrBufferRefCount(Buffer buffer);\nextern void CheckBufferIsPinnedOnce(Buffer buffer);\nextern Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation,\n\t\t\t\t\t\t\t\t   BlockNumber blockNum);\n\nextern Buffer ExtendBufferedRel(BufferManagerRelation bmr,\n\t\t\t\t\t\t\t\tForkNumber forkNum,\n\t\t\t\t\t\t\t\tBufferAccessStrategy strategy,\n\t\t\t\t\t\t\t\tuint32 flags);\nextern BlockNumber ExtendBufferedRelBy(BufferManagerRelation bmr,\n\t\t\t\t\t\t\t\t\t   ForkNumber fork,\n\t\t\t\t\t\t\t\t\t   BufferAccessStrategy strategy,\n\t\t\t\t\t\t\t\t\t   uint32 flags,\n\t\t\t\t\t\t\t\t\t   uint32 extend_by,\n\t\t\t\t\t\t\t\t\t   Buffer *buffers,\n\t\t\t\t\t\t\t\t\t   uint32 *extended_by);\nextern Buffer ExtendBufferedRelTo(BufferManagerRelation bmr,\n\t\t\t\t\t\t\t\t  ForkNumber fork,\n\t\t\t\t\t\t\t\t  BufferAccessStrategy strategy,\n\t\t\t\t\t\t\t\t  uint32 flags,\n\t\t\t\t\t\t\t\t  BlockNumber extend_to,\n\t\t\t\t\t\t\t\t  ReadBufferMode mode);\n\nextern void InitBufferPoolAccess(void);\nextern void AtEOXact_Buffers(bool isCommit);\nextern char *DebugPrintBufferRefcount(Buffer buffer);\nextern void CheckPointBuffers(int flags);\nextern BlockNumber BufferGetBlockNumber(Buffer buffer);\nextern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation,\n\t\t\t\t\t\t\t\t\t\t\t\t   ForkNumber forkNum);\nextern void FlushOneBuffer(Buffer buffer);\nextern void FlushRelationBuffers(Relation rel);\nextern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels);\nextern void CreateAndCopyRelationData(RelFileLocator src_rlocator,\n\t\t\t\t\t\t\t\t\t  RelFileLocator dst_rlocator,\n\t\t\t\t\t\t\t\t\t  bool permanent);\nextern void FlushDatabaseBuffers(Oid dbid);\nextern void DropRelationBuffers(struct SMgrRelationData *smgr_reln,\n\t\t\t\t\t\t\t\tForkNumber *forkNum,\n\t\t\t\t\t\t\t\tint nforks, BlockNumber *firstDelBlock);\nextern void DropRelationsAllBuffers(struct SMgrRelationData **smgr_reln,\n\t\t\t\t\t\t\t\t\tint nlocators);\nextern void DropDatabaseBuffers(Oid dbid);\n\n#define RelationGetNumberOfBlocks(reln) \\\n\tRelationGetNumberOfBlocksInFork(reln, MAIN_FORKNUM)\n\nextern bool BufferIsPermanent(Buffer buffer);\nextern XLogRecPtr BufferGetLSNAtomic(Buffer buffer);\n\n#ifdef NOT_USED\nextern void PrintPinnedBufs(void);\n#endif\nextern void BufferGetTag(Buffer buffer, RelFileLocator *rlocator,\n\t\t\t\t\t\t ForkNumber *forknum, BlockNumber *blknum);\n\nextern void MarkBufferDirtyHint(Buffer buffer, bool buffer_std);\n\nextern void UnlockBuffers(void);\nextern void LockBuffer(Buffer buffer, int mode);\nextern bool ConditionalLockBuffer(Buffer buffer);\nextern void LockBufferForCleanup(Buffer buffer);\nextern bool ConditionalLockBufferForCleanup(Buffer buffer);\nextern bool IsBufferCleanupOK(Buffer buffer);\nextern bool HoldingBufferPinThatDelaysRecovery(void);\n\nextern bool BgBufferSync(struct WritebackContext *wb_context);\n\nextern void LimitAdditionalPins(uint32 *additional_pins);\nextern void LimitAdditionalLocalPins(uint32 *additional_pins);\n\nextern bool EvictUnpinnedBuffer(Buffer buf);\n\n/* in buf_init.c */\nextern void InitBufferPool(void);\nextern Size BufferShmemSize(void);\n\n/* in localbuf.c */\nextern void AtProcExit_LocalBuffers(void);\n\n/* in freelist.c */\n\nextern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype);\nextern BufferAccessStrategy GetAccessStrategyWithSize(BufferAccessStrategyType btype,\n\t\t\t\t\t\t\t\t\t\t\t\t\t  int ring_size_kb);\nextern int\tGetAccessStrategyBufferCount(BufferAccessStrategy strategy);\nextern int\tGetAccessStrategyPinLimit(BufferAccessStrategy strategy);\n\nextern void FreeAccessStrategy(BufferAccessStrategy strategy);\n\n\n/* inline functions */\n\n/*\n * Although this header file is nominally backend-only, certain frontend\n * programs like pg_waldump include it.  For compilers that emit static\n * inline functions even when they're unused, that leads to unsatisfied\n * external references; hence hide these with #ifndef FRONTEND.\n */\n\n#ifndef FRONTEND\n\n/*\n * BufferIsValid\n *\t\tTrue iff the given buffer number is valid (either as a shared\n *\t\tor local buffer).\n *\n * Note: For a long time this was defined the same as BufferIsPinned,\n * that is it would say False if you didn't hold a pin on the buffer.\n * I believe this was bogus and served only to mask logic errors.\n * Code should always know whether it has a buffer reference,\n * independently of the pin state.\n *\n * Note: For a further long time this was not quite the inverse of the\n * BufferIsInvalid() macro, in that it also did sanity checks to verify\n * that the buffer number was in range.  Most likely, this macro was\n * originally intended only to be used in assertions, but its use has\n * since expanded quite a bit, and the overhead of making those checks\n * even in non-assert-enabled builds can be significant.  Thus, we've\n * now demoted the range checks to assertions within the macro itself.\n */\nstatic inline bool\nBufferIsValid(Buffer bufnum)\n{\n\tAssert(bufnum <= NBuffers);\n\tAssert(bufnum >= -NLocBuffer);\n\n\treturn bufnum != InvalidBuffer;\n}\n\n/*\n * BufferGetBlock\n *\t\tReturns a reference to a disk page image associated with a buffer.\n *\n * Note:\n *\t\tAssumes buffer is valid.\n */\nstatic inline Block\nBufferGetBlock(Buffer buffer)\n{\n\tAssert(BufferIsValid(buffer));\n\n\tif (BufferIsLocal(buffer))\n\t\treturn LocalBufferBlockPointers[-buffer - 1];\n\telse\n\t\treturn (Block) (BufferBlocks + ((Size) (buffer - 1)) * BLCKSZ);\n}\n\n/*\n * BufferGetPageSize\n *\t\tReturns the page size within a buffer.\n *\n * Notes:\n *\t\tAssumes buffer is valid.\n *\n *\t\tThe buffer can be a raw disk block and need not contain a valid\n *\t\t(formatted) disk page.\n */\n/* XXX should dig out of buffer descriptor */\nstatic inline Size\nBufferGetPageSize(Buffer buffer)\n{\n\tAssertMacro(BufferIsValid(buffer));\n\treturn (Size) BLCKSZ;\n}\n\n/*\n * BufferGetPage\n *\t\tReturns the page associated with a buffer.\n */\nstatic inline Page\nBufferGetPage(Buffer buffer)\n{\n\treturn (Page) BufferGetBlock(buffer);\n}\n\n#endif\t\t\t\t\t\t\t/* FRONTEND */\n\n#endif\t\t\t\t\t\t\t/* BUFMGR_H */\n","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h","version":1}}}

I[04:00:57.329] <-- textDocument/didOpen
I[04:00:57.340] Loaded compilation database from /root/src/postgres/compile_commands.json
V[04:00:57.340] Broadcasting compilation database from /root/src/postgres
I[04:00:57.340] ASTWorker building file /root/src/postgres/src/include/storage/bufmgr.h version 1 with command inferred from /root/src/postgres/src/backend/storage/buffer/bufmgr.c
[/root/src/postgres/src/backend/storage/buffer]
/usr/bin/gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -g -O0 -I../../../../src/include -D_GNU_SOURCE -c -x c-header -resource-dir=/root/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/lib/clang/18 -- /root/src/postgres/src/include/storage/bufmgr.h
V[04:00:57.341] Driver produced command: cc1 -cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name bufmgr.h -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -ffloat16-excess-precision=standard -fbfloat16-excess-precision=standard -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=5 -debugger-tuning=gdb -fdebug-compilation-dir=/root/src/postgres/src/backend/storage/buffer -fcoverage-compilation-dir=/root/src/postgres/src/backend/storage/buffer -resource-dir /root/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/lib/clang/18 -I ../../../../src/include -D _GNU_SOURCE -internal-isystem /root/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/lib/clang/18/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O0 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -Wno-format-truncation -Wno-stringop-truncation -ferror-limit 19 -fwrapv -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -no-round-trip-args -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c-header /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:57.341] --> textDocument/clangd.fileStatus
V[04:00:57.341] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes, running Update","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}

V[04:00:57.341] Building first preamble for /root/src/postgres/src/include/storage/bufmgr.h version 1
V[04:00:57.342] Ignored diagnostic. unknown warning option '-Wimplicit-fallthrough=3'; did you mean '-Wimplicit-fallthrough'?
V[04:00:57.342] Ignored diagnostic. unknown warning option '-Wshadow=compatible-local'; did you mean '-Wshadow-uncaptured-local'?
V[04:00:57.343] Ignored diagnostic. unknown warning option '-Wno-stringop-truncation'; did you mean '-Wno-format-truncation'?
V[04:00:57.343] Ignored diagnostic. unknown warning option '-Wimplicit-fallthrough=3'; did you mean '-Wimplicit-fallthrough'?
I[04:00:57.344] --> window/workDoneProgress/create(0)
V[04:00:57.344] >>> {"id":0,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"backgroundIndexProgress"}}

I[04:00:57.344] Enqueueing 1124 commands for indexing
V[04:00:57.345] Ignored diagnostic. unknown warning option '-Wshadow=compatible-local'; did you mean '-Wshadow-uncaptured-local'?
V[04:00:57.345] Ignored diagnostic. unknown warning option '-Wno-stringop-truncation'; did you mean '-Wno-format-truncation'?
V[04:00:57.345] <<< {"id":0,"jsonrpc":"2.0","result":null}

I[04:00:57.345] <-- reply(0)
I[04:00:57.345] --> $/progress
V[04:00:57.345] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"begin","percentage":0,"title":"indexing"}}}

I[04:00:57.345] --> $/progress
V[04:00:57.345] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}}

V[04:00:57.358] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
V[04:00:57.358] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
V[04:00:57.358] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'bool'
V[04:00:57.359] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'bool'
V[04:00:57.360] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint64'; did you mean 'uint'?
V[04:00:57.360] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint32'; did you mean 'uint'?
V[04:00:57.360] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
V[04:00:57.360] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'Pointer'
V[04:00:57.360] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
V[04:00:57.360] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
V[04:00:57.360] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
V[04:00:57.361] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'Pointer'
V[04:00:57.361] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
V[04:00:57.361] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint32'; did you mean 'uint'?
V[04:00:57.361] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint32'; did you mean 'uint'?
V[04:00:57.361] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
V[04:00:57.361] Dropped diagnostic: /root/src/postgres/src/include/storage/bufmgr.h: in included file: unknown type name 'uint16'; did you mean 'uint'?
I[04:00:57.376] Built preamble of size 694936 for file /root/src/postgres/src/include/storage/bufmgr.h version 1 in 0.03 seconds
I[04:00:57.376] Indexing c17 standard library in the context of /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:57.376] --> workspace/semanticTokens/refresh(1)
I[04:00:57.376] --> textDocument/clangd.fileStatus
V[04:00:57.376] >>> {"id":1,"jsonrpc":"2.0","method":"workspace/semanticTokens/refresh","params":null}

V[04:00:57.376] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes, running Build AST","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}

I[04:00:57.377] --> textDocument/clangd.fileStatus
V[04:00:57.377] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes, parsing main file","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}

V[04:00:57.377] Ignored diagnostic. unknown warning option '-Wimplicit-fallthrough=3'; did you mean '-Wimplicit-fallthrough'?
V[04:00:57.377] Ignored diagnostic. unknown warning option '-Wshadow=compatible-local'; did you mean '-Wshadow-uncaptured-local'?
V[04:00:57.378] Ignored diagnostic. unknown warning option '-Wno-stringop-truncation'; did you mean '-Wno-format-truncation'?
V[04:00:57.384] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[],"triggerKind":2},"range":{"end":{"character":35,"line":73},"start":{"character":35,"line":73}},"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:57.384] <-- textDocument/codeAction(1)
V[04:00:57.384] Ignored diagnostic. unknown warning option '-Wimplicit-fallthrough=3'; did you mean '-Wimplicit-fallthrough'?
V[04:00:57.385] Ignored diagnostic. unknown warning option '-Wshadow=compatible-local'; did you mean '-Wshadow-uncaptured-local'?
V[04:00:57.385] Ignored diagnostic. unknown warning option '-Wno-stringop-truncation'; did you mean '-Wno-format-truncation'?
V[04:00:57.393] Trying to fix unresolved name "bool" in scopes: []
V[04:00:57.393] Trying to fix unresolved name "int16" in scopes: []
V[04:00:57.393] Trying to fix unresolved name "int16" in scopes: []
V[04:00:57.393] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.394] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.394] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.394] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.394] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.394] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.395] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.395] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.396] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.396] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.396] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.397] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.397] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.397] Trying to fix unresolved name "PGDLLIMPORT" in scopes: []
V[04:00:57.402] indexed file AST for /root/src/postgres/src/include/storage/bufmgr.h version 1:
  symbol slab: 134 symbols, 43496 bytes
  ref slab: 146 symbols, 255 refs, 18560 bytes
  relations slab: 0 relations, 24 bytes
V[04:00:57.402] Build dynamic index for main-file symbols with estimated memory usage of 111544 bytes
I[04:00:57.402] --> textDocument/publishDiagnostics
V[04:00:57.402] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"unknown_typename_suggest","message":"In included file: unknown type name 'uint32'; did you mean 'uint'?","range":{"end":{"character":26,"line":17},"start":{"character":9,"line":17}},"relatedInformation":[{"location":{"range":{"end":{"character":14,"line":30},"start":{"character":8,"line":30}},"uri":"file:///root/src/postgres/src/include/storage/block.h"},"message":"Error occurred here"},{"location":{"range":{"end":{"character":25,"line":149},"start":{"character":21,"line":149}},"uri":"file:///usr/include/x86_64-linux-gnu/sys/types.h"},"message":"'uint' declared here"}],"severity":1,"source":"clang"},{"code":"unknown_typename_suggest","message":"In included file: unknown type name 'uint64'; did you mean 'uint'?","range":{"end":{"character":28,"line":19},"start":{"character":9,"line":19}},"relatedInformation":[{"location":{"range":{"end":{"character":14,"line":20},"start":{"character":8,"line":20}},"uri":"file:///root/src/postgres/src/include/access/xlogdefs.h"},"message":"Error occurred here"},{"location":{"range":{"end":{"character":25,"line":149},"start":{"character":21,"line":149}},"uri":"file:///usr/include/x86_64-linux-gnu/sys/types.h"},"message":"'uint' declared here"}],"severity":1,"source":"clang"},{"code":"fatal_too_many_errors","message":"Too many errors emitted, stopping now","range":{"end":{"character":0,"line":0},"start":{"character":0,"line":0}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'bool'","range":{"end":{"character":5,"line":60},"start":{"character":1,"line":60}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'int16'","range":{"end":{"character":6,"line":135},"start":{"character":1,"line":135}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'int16'","range":{"end":{"character":6,"line":136},"start":{"character":1,"line":136}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":148},"start":{"character":7,"line":148}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":151},"start":{"character":7,"line":151}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"invalid_token_after_toplevel_declarator","message":"Expected ';' after top level declarator (fix available)","range":{"end":{"character":42,"line":151},"start":{"character":24,"line":151}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":152},"start":{"character":7,"line":152}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":153},"start":{"character":7,"line":153}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":154},"start":{"character":7,"line":154}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"invalid_token_after_toplevel_declarator","message":"Expected ';' after top level declarator (fix available)","range":{"end":{"character":39,"line":154},"start":{"character":24,"line":154}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":164},"start":{"character":7,"line":164}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":165},"start":{"character":7,"line":165}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":169},"start":{"character":7,"line":169}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":171},"start":{"character":7,"line":171}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":172},"start":{"character":7,"line":172}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":173},"start":{"character":7,"line":173}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":176},"start":{"character":7,"line":176}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":179},"start":{"character":7,"line":179}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'PGDLLIMPORT'","range":{"end":{"character":18,"line":180},"start":{"character":7,"line":180}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"fatal_too_many_errors","message":"Too many errors emitted, stopping now","range":{"end":{"character":0,"line":0},"start":{"character":0,"line":0}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unused-includes","codeDescription":{"href":"https://clangd.llvm.org/guides/include-cleaner"},"message":"Included header snapmgr.h is not used directly (fix available)","range":{"end":{"character":26,"line":22},"start":{"character":0,"line":22}},"relatedInformation":[],"severity":2,"source":"clangd","tags":[1]}],"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h","version":1}}

I[04:00:57.402] --> textDocument/inactiveRegions
V[04:00:57.402] >>> {"jsonrpc":"2.0","method":"textDocument/inactiveRegions","params":{"regions":[{"end":{"character":45,"line":159},"start":{"character":0,"line":158}},{"end":{"character":34,"line":283},"start":{"character":0,"line":283}}],"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

V[04:00:57.403] ASTWorker running codeAction on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:57.403] --> reply:textDocument/codeAction(1) 19 ms
V[04:00:57.403] >>> {"id":1,"jsonrpc":"2.0","result":[]}

I[04:00:57.403] --> textDocument/clangd.fileStatus
V[04:00:57.403] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}

V[04:00:57.405] indexed preamble AST for /root/src/postgres/src/include/storage/bufmgr.h version 1:
  symbol slab: 2849 symbols, 816736 bytes
  ref slab: 0 symbols, 0 refs, 128 bytes
  relations slab: 0 relations, 24 bytes
V[04:00:57.408] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:57.408] <-- textDocument/documentLink(2)
V[04:00:57.408] ASTWorker running DocumentLinks on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
V[04:00:57.408] <<< {"id":3,"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":31,"line":125},"start":{"character":0,"line":17}},"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:57.408] <-- textDocument/inlayHint(3)
I[04:00:57.409] --> reply:textDocument/documentLink(2) 0 ms
V[04:00:57.409] >>> {"id":2,"jsonrpc":"2.0","result":[{"range":{"end":{"character":26,"line":16},"start":{"character":9,"line":16}},"target":"file:///root/src/postgres/src/include/port/pg_iovec.h"},{"range":{"end":{"character":26,"line":17},"start":{"character":9,"line":17}},"target":"file:///root/src/postgres/src/include/storage/block.h"},{"range":{"end":{"character":24,"line":18},"start":{"character":9,"line":18}},"target":"file:///root/src/postgres/src/include/storage/buf.h"},{"range":{"end":{"character":28,"line":19},"start":{"character":9,"line":19}},"target":"file:///root/src/postgres/src/include/storage/bufpage.h"},{"range":{"end":{"character":35,"line":20},"start":{"character":9,"line":20}},"target":"file:///root/src/postgres/src/include/storage/relfilelocator.h"},{"range":{"end":{"character":27,"line":21},"start":{"character":9,"line":21}},"target":"file:///root/src/postgres/src/include/utils/relcache.h"},{"range":{"end":{"character":26,"line":22},"start":{"character":9,"line":22}},"target":"file:///root/src/postgres/src/include/utils/snapmgr.h"}]}

V[04:00:57.409] ASTWorker running InlayHints on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:57.409] --> reply:textDocument/inlayHint(3) 0 ms
V[04:00:57.409] >>> {"id":3,"jsonrpc":"2.0","result":[]}

I[04:00:57.409] --> textDocument/clangd.fileStatus
V[04:00:57.409] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}

V[04:00:57.410] <<< {"id":1,"jsonrpc":"2.0","result":null}

I[04:00:57.410] <-- reply(1)
V[04:00:57.419] Build dynamic index for header symbols with estimated memory usage of 2612220 bytes
V[04:00:57.440] <<< {"id":4,"jsonrpc":"2.0","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:57.440] <-- textDocument/semanticTokens/full(4)
V[04:00:57.440] ASTWorker running SemanticHighlights on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:57.441] --> reply:textDocument/semanticTokens/full(4) 0 ms
V[04:00:57.441] >>> {"id":4,"jsonrpc":"2.0","result":{"data":[13,8,8,19,131072,1,8,8,19,131073,10,14,5,12,65537,8,13,24,10,131073,2,1,10,11,65553,1,1,12,11,65553,2,1,13,11,65553,1,1,10,11,65553,1,2,24,10,65537,5,1,10,11,65553,1,1,17,11,65553,2,1,25,11,65553,2,1,17,11,65553,1,1,17,11,65553,2,2,14,10,131073,5,15,20,8,131073,2,1,6,18,65536,0,8,13,6,32769,1,7,12,6,32769,1,2,20,8,65537,5,13,19,10,131073,7,1,22,11,65553,0,28,2,21,0,3,1,22,11,65553,0,28,2,21,0,6,1,24,11,65553,0,30,2,21,0,3,1,13,11,65553,0,19,2,21,0,3,1,19,11,65553,0,25,2,21,0,3,1,14,11,65553,0,20,2,21,0,1,4,19,10,65537,7,15,21,8,131073,2,1,8,12,65536,0,9,3,6,32769,1,8,16,8,131073,0,18,4,6,32769,1,7,14,6,32769,1,2,21,8,65537,2,8,7,19,131073,1,8,8,19,131073,3,8,26,19,131073,2,8,25,19,131073,2,7,20,8,131073,7,1,8,12,65536,0,9,3,6,32769,1,8,16,8,131072,0,18,4,6,32769,1,7,16,6,32769,1,1,10,10,65536,0,11,7,6,32769,1,1,20,12,65536,0,21,8,6,32769,7,1,6,18,65536,0,11,7,6,32769,1,1,11,18,65536,0,12,8,6,32769,1,7,5,6,32769,1,8,7,6,32769,1,8,14,6,32769,3,15,20,8,131072,0,21,20,8,65537,3,7,16,8,131073,3,7,16,8,131073,3,23,8,0,131073,3,19,4,0,131073,1,23,21,0,131073,1,26,23,0,131073,1,19,4,0,131073,3,7,12,19,131072,4,8,32,19,131073,1,8,34,19,131073,2,23,24,0,131073,1,23,26,0,131073,2,8,20,19,131073,0,21,10,19,131072,1,8,24,19,131073,0,29,20,19,131072,1,23,16,0,131073,2,23,22,0,131073,1,23,19,0,131073,1,23,20,0,131073,3,25,12,0,131073,3,23,10,0,131073,1,19,5,0,131073,1,19,5,0,131073,3,8,18,19,131073,3,8,5,19,131073,0,6,18,19,131072,5,8,18,19,131073,1,8,17,19,131073,1,8,21,19,131073,6,7,20,8,65536,0,21,20,3,131073,0,28,16,8,131072,0,18,9,2,16387,1,13,10,10,65536,0,11,7,2,16387,1,13,11,18,65536,0,12,8,2,16387,1,7,20,8,65536,0,21,14,3,131073,0,15,8,12,65536,0,9,4,2,16387,0,6,10,10,65536,0,11,7,2,16387,1,13,11,18,65536,0,12,8,2,16387,1,12,16,3,131073,0,17,14,8,65536,0,15,8,2,16387,0,10,10,10,65536,0,11,7,2,16387,1,8,11,18,65536,0,12,8,2,16387,0,10,6,18,65536,0,7,13,2,16387,1,7,6,18,65536,0,7,10,3,131073,0,11,8,12,65536,0,9,4,2,16387,0,6,11,18,65536,0,12,8,2,16387,1,7,6,18,65536,0,7,18,3,131073,0,19,8,12,65536,0,9,4,2,16387,0,6,10,10,65536,0,11,7,2,16387,1,9,11,18,65536,0,12,8,2,16387,0,10,14,10,131072,0,15,4,2,16387,1,9,20,12,65536,0,21,8,2,16387,1,7,6,18,65536,0,7,25,3,131073,0,26,14,8,65536,0,15,8,2,16387,1,10,10,10,65536,0,11,7,2,16387,0,9,11,18,65536,0,12,8,2,16387,1,10,14,10,131072,0,15,4,2,16387,0,6,20,12,65536,0,21,8,2,16387,1,15,9,2,16387,2,12,15,3,131073,0,16,20,8,65536,0,22,9,2,16387,1,7,6,18,65536,0,8,6,2,16387,1,7,11,18,65536,0,12,8,2,16387,1,11,5,2,16387,1,12,16,3,131073,0,17,20,8,65536,0,22,9,2,16387,1,8,6,18,65536,0,8,7,2,16387,1,8,11,18,65536,0,12,8,2,16387,1,13,7,2,16387,1,12,5,2,16387,1,12,15,3,131073,0,16,20,8,65536,0,22,9,2,16387,2,12,13,3,131073,0,14,6,18,65536,0,7,6,2,16387,1,12,19,3,131073,0,20,6,18,65536,0,7,6,2,16387,1,12,23,3,131073,0,24,6,18,65536,0,7,6,2,16387,1,12,13,3,131073,0,14,6,18,65536,0,7,6,2,16387,1,12,15,3,131073,0,16,6,18,65536,0,7,6,2,16387,1,12,18,3,131073,0,19,6,18,65536,0,7,6,2,16387,1,12,23,3,131073,0,24,6,18,65536,0,7,6,2,16387,1,7,6,18,65536,0,7,20,3,131073,0,21,6,18,65536,0,7,6,2,16387,0,8,8,12,65536,0,9,8,2,16387,1,11,11,18,65536,0,12,8,2,16387,2,7,6,18,65536,0,7,17,3,131073,0,18,21,8,65536,0,22,3,2,16387,1,8,10,10,65536,0,11,7,2,16387,1,8,20,12,65536,0,21,8,2,16387,1,15,5,2,16387,1,7,11,18,65536,0,12,19,3,131073,0,20,21,8,65536,0,22,3,2,16387,1,12,10,10,65536,0,11,4,2,16387,1,12,20,12,65536,0,21,8,2,16387,1,19,5,2,16387,1,19,9,2,16387,1,12,6,18,65536,0,8,7,2,16387,1,20,11,2,16387,1,7,6,18,65536,0,7,19,3,131073,0,20,21,8,65536,0,22,3,2,16387,1,10,10,10,65536,0,11,4,2,16387,1,10,20,12,65536,0,21,8,2,16387,1,17,5,2,16387,1,10,11,18,65536,0,12,9,2,16387,1,10,14,10,131072,0,15,4,2,16387,2,12,20,3,131073,1,12,16,3,131073,0,22,8,2,16387,1,13,24,3,131073,0,25,6,18,65536,0,7,6,2,16387,1,12,17,3,131073,0,22,5,2,16387,1,7,11,18,65536,0,12,20,3,131073,0,21,6,18,65536,0,7,6,2,16387,1,7,11,18,65536,0,12,31,3,131073,0,32,8,12,65536,0,9,8,2,16387,1,15,10,10,65536,0,11,7,2,16387,1,12,14,3,131073,0,15,6,18,65536,0,7,6,2,16387,1,12,20,3,131073,0,21,8,12,65536,0,9,3,2,16387,1,12,24,3,131073,0,32,16,8,131072,0,19,5,2,16387,0,11,5,2,16387,1,12,25,3,131073,0,26,14,8,65536,0,15,12,2,16387,1,11,14,8,65536,0,15,12,2,16387,1,16,9,2,16387,1,12,20,3,131073,0,25,4,2,16387,1,12,19,3,131073,0,27,16,8,131072,0,18,9,2,16387,1,8,10,10,65536,0,12,7,2,16387,1,12,6,2,16387,0,8,11,18,65536,0,13,13,2,16387,1,12,23,3,131073,0,31,16,8,131072,0,19,9,2,16387,1,13,9,2,16387,1,12,19,3,131073,0,24,4,2,16387,2,8,25,19,131073,3,12,17,3,131073,0,18,6,18,65536,0,7,6,2,16387,1,7,10,18,65536,0,11,18,3,131073,0,19,6,18,65536,0,7,6,2,16387,2,7,8,19,131072,3,12,12,3,131073,0,13,6,18,65536,0,7,6,2,16387,0,8,14,8,65536,0,16,8,2,16387,1,7,10,10,65536,0,12,7,2,16387,0,9,11,18,65536,0,13,6,2,16387,2,12,19,3,131073,0,20,6,18,65536,0,7,6,2,16387,0,13,10,2,16387,2,12,13,3,131073,1,12,10,3,131073,0,11,6,18,65536,0,7,6,2,16387,0,12,4,2,16387,1,12,21,3,131073,0,22,6,18,65536,0,7,6,2,16387,1,12,20,3,131073,0,21,6,18,65536,0,7,6,2,16387,1,12,31,3,131073,0,32,6,18,65536,0,7,6,2,16387,1,12,17,3,131073,0,18,6,18,65536,0,7,6,2,16387,1,12,34,3,131073,2,12,12,3,131073,0,20,16,8,131072,0,18,10,2,16387,2,12,19,3,131073,0,28,15,2,16387,1,12,24,3,131073,0,33,15,2,16387,2,12,19,3,131073,0,20,6,18,65536,0,7,3,2,16387,3,12,14,3,131073,1,12,15,3,131073,3,12,23,3,131073,4,7,20,12,65536,0,21,17,3,131073,0,18,24,10,65536,0,25,5,2,16387,1,7,20,12,65536,0,21,25,3,131073,0,26,24,10,65536,0,25,5,2,16387,1,19,12,2,16387,1,11,28,3,131073,0,29,20,12,65536,0,21,8,2,16387,1,11,25,3,131073,0,26,20,12,65536,0,21,8,2,16387,2,12,18,3,131073,0,19,20,12,65536,0,21,8,2,16387,12,8,8,19,131072,22,0,13,3,65539,0,14,6,18,65536,0,7,6,2,16387,2,1,6,3,131072,0,7,6,2,16384,0,7,2,21,8192,1,1,6,3,131072,0,7,6,2,16384,0,7,2,21,8192,0,3,1,21,8192,2,8,6,2,16384,0,7,2,21,0,0,3,13,19,131072,10,14,5,12,65536,1,0,14,3,65539,0,15,6,18,65536,0,7,6,2,16387,2,1,6,3,131072,0,21,6,2,16384,2,5,13,19,131072,18,0,17,3,65539,0,18,6,18,65536,0,7,6,2,16387,2,1,11,3,131072,0,26,6,2,16384,8,14,4,18,65536,1,0,13,3,65539,0,14,6,18,65536,0,7,6,2,16387,2,9,4,18,65536,0,6,14,3,65536,0,15,6,2,16384],"resultId":"1"}}

I[04:00:57.441] --> textDocument/clangd.fileStatus
V[04:00:57.441] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}

I[04:00:57.488] Indexed c17 standard library: 4405 symbols, 31 filtered
V[04:00:57.500] Build dynamic index for header symbols with estimated memory usage of 5205252 bytes
V[04:00:57.606] <<< {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"off"}}

I[04:00:57.606] <-- $/setTrace
I[04:00:57.606] unhandled notification $/setTrace
V[04:00:57.623] <<< {"id":5,"jsonrpc":"2.0","method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:57.623] <-- textDocument/foldingRange(5)
I[04:00:57.624] --> reply:textDocument/foldingRange(5) 0 ms
V[04:00:57.624] >>> {"id":5,"jsonrpc":"2.0","result":[{"endLine":38,"kind":"region","startCharacter":1,"startLine":33},{"endLine":51,"kind":"region","startCharacter":1,"startLine":43},{"endLine":60,"kind":"region","startCharacter":1,"startLine":58},{"endLine":91,"kind":"region","startCharacter":1,"startLine":67},{"endLine":103,"kind":"region","startCharacter":1,"startLine":100},{"endLine":136,"kind":"region","startCharacter":1,"startLine":115},{"endCharacter":33,"endLine":201,"kind":"region","startCharacter":49,"startLine":200},{"endCharacter":38,"endLine":209,"kind":"region","startCharacter":33,"startLine":208},{"endCharacter":24,"endLine":213,"kind":"region","startCharacter":40,"startLine":211},{"endCharacter":16,"endLine":218,"kind":"region","startCharacter":28,"startLine":216},{"endCharacter":17,"endLine":223,"kind":"region","startCharacter":29,"startLine":220},{"endCharacter":20,"endLine":239,"kind":"region","startCharacter":32,"startLine":237},{"endCharacter":31,"endLine":246,"kind":"region","startCharacter":39,"startLine":241},{"endCharacter":29,"endLine":252,"kind":"region","startCharacter":34,"startLine":248},{"endCharacter":25,"endLine":266,"kind":"region","startCharacter":38,"startLine":265},{"endCharacter":46,"endLine":270,"kind":"region","startCharacter":32,"startLine":269},{"endLine":359,"kind":"region","startCharacter":1,"startLine":355},{"endLine":377,"kind":"region","startCharacter":1,"startLine":371},{"endLine":395,"kind":"region","startCharacter":1,"startLine":393},{"endLine":405,"kind":"region","startCharacter":1,"startLine":404},{"endCharacter":1,"endLine":11,"kind":"comment","startCharacter":2,"startLine":0},{"endCharacter":1,"endLine":30,"kind":"comment","startCharacter":2,"startLine":26},{"endCharacter":1,"endLine":55,"kind":"comment","startCharacter":2,"startLine":54},{"endCharacter":1,"endLine":64,"kind":"comment","startCharacter":2,"startLine":63},{"endCharacter":2,"endLine":71,"kind":"comment","startCharacter":3,"startLine":68},{"endCharacter":2,"endLine":80,"kind":"comment","startCharacter":3,"startLine":78},{"endCharacter":1,"endLine":97,"kind":"comment","startCharacter":2,"startLine":94},{"endCharacter":2,"endLine":119,"kind":"comment","startCharacter":3,"startLine":116},{"endCharacter":2,"endLine":130,"kind":"comment","startCharacter":3,"startLine":127},{"endCharacter":1,"endLine":190,"kind":"comment","startCharacter":2,"startLine":189},{"endCharacter":1,"endLine":198,"kind":"comment","startCharacter":2,"startLine":197},{"endCharacter":1,"endLine":329,"kind":"comment","startCharacter":2,"startLine":325},{"endCharacter":1,"endLine":351,"kind":"comment","startCharacter":2,"startLine":334},{"endCharacter":1,"endLine":367,"kind":"comment","startCharacter":2,"startLine":362},{"endCharacter":43,"endLine":389,"kind":"comment","startCharacter":2,"startLine":380},{"endCharacter":1,"endLine":400,"kind":"comment","startCharacter":2,"startLine":398}]}

V[04:00:57.724] <<< {"id":6,"jsonrpc":"2.0","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:57.724] <-- textDocument/documentSymbol(6)
V[04:00:57.724] ASTWorker running DocumentSymbols on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
V[04:00:57.724] <<< {"id":7,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[],"triggerKind":2},"range":{"end":{"character":35,"line":73},"start":{"character":35,"line":73}},"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:57.724] <-- textDocument/codeAction(7)
V[04:00:57.730] <<< {"id":8,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:57.730] <-- textDocument/documentLink(8)
I[04:00:57.731] --> reply:textDocument/documentSymbol(6) 6 ms
V[04:00:57.732] >>> {"id":6,"jsonrpc":"2.0","result":[{"detail":"type alias","kind":5,"name":"Block","range":{"end":{"character":19,"line":24},"start":{"character":0,"line":24}},"selectionRange":{"end":{"character":19,"line":24},"start":{"character":14,"line":24}}},{"children":[{"detail":"int","kind":22,"name":"BAS_NORMAL","range":{"end":{"character":11,"line":34},"start":{"character":1,"line":34}},"selectionRange":{"end":{"character":11,"line":34},"start":{"character":1,"line":34}}},{"detail":"int","kind":22,"name":"BAS_BULKREAD","range":{"end":{"character":13,"line":35},"start":{"character":1,"line":35}},"selectionRange":{"end":{"character":13,"line":35},"start":{"character":1,"line":35}}},{"detail":"int","kind":22,"name":"BAS_BULKWRITE","range":{"end":{"character":14,"line":37},"start":{"character":1,"line":37}},"selectionRange":{"end":{"character":14,"line":37},"start":{"character":1,"line":37}}},{"detail":"int","kind":22,"name":"BAS_VACUUM","range":{"end":{"character":11,"line":38},"start":{"character":1,"line":38}},"selectionRange":{"end":{"character":11,"line":38},"start":{"character":1,"line":38}}}],"detail":"enum","kind":10,"name":"BufferAccessStrategyType","range":{"end":{"character":1,"line":39},"start":{"character":8,"line":32}},"selectionRange":{"end":{"character":37,"line":32},"start":{"character":13,"line":32}}},{"detail":"type alias","kind":5,"name":"BufferAccessStrategyType","range":{"end":{"character":26,"line":39},"start":{"character":0,"line":32}},"selectionRange":{"end":{"character":26,"line":39},"start":{"character":2,"line":39}}},{"children":[{"detail":"int","kind":22,"name":"RBM_NORMAL","range":{"end":{"character":11,"line":44},"start":{"character":1,"line":44}},"selectionRange":{"end":{"character":11,"line":44},"start":{"character":1,"line":44}}},{"detail":"int","kind":22,"name":"RBM_ZERO_AND_LOCK","range":{"end":{"character":18,"line":45},"start":{"character":1,"line":45}},"selectionRange":{"end":{"character":18,"line":45},"start":{"character":1,"line":45}}},{"detail":"int","kind":22,"name":"RBM_ZERO_AND_CLEANUP_LOCK","range":{"end":{"character":26,"line":47},"start":{"character":1,"line":47}},"selectionRange":{"end":{"character":26,"line":47},"start":{"character":1,"line":47}}},{"detail":"int","kind":22,"name":"RBM_ZERO_ON_ERROR","range":{"end":{"character":18,"line":49},"start":{"character":1,"line":49}},"selectionRange":{"end":{"character":18,"line":49},"start":{"character":1,"line":49}}},{"detail":"int","kind":22,"name":"RBM_NORMAL_NO_LOG","range":{"end":{"character":18,"line":50},"start":{"character":1,"line":50}},"selectionRange":{"end":{"character":18,"line":50},"start":{"character":1,"line":50}}}],"detail":"enum","kind":10,"name":"(anonymous enum)","range":{"end":{"character":1,"line":52},"start":{"character":8,"line":42}},"selectionRange":{"end":{"character":12,"line":42},"start":{"character":8,"line":42}}},{"detail":"type alias","kind":5,"name":"ReadBufferMode","range":{"end":{"character":16,"line":52},"start":{"character":0,"line":42}},"selectionRange":{"end":{"character":16,"line":52},"start":{"character":2,"line":52}}},{"children":[{"detail":"Buffer","kind":8,"name":"recent_buffer","range":{"end":{"character":22,"line":59},"start":{"character":1,"line":59}},"selectionRange":{"end":{"character":22,"line":59},"start":{"character":9,"line":59}}},{"detail":"int","kind":8,"name":"initiated_io","range":{"end":{"character":19,"line":60},"start":{"character":1,"line":60}},"selectionRange":{"end":{"character":19,"line":60},"start":{"character":7,"line":60}}}],"detail":"struct","kind":23,"name":"PrefetchBufferResult","range":{"end":{"character":1,"line":61},"start":{"character":8,"line":57}},"selectionRange":{"end":{"character":35,"line":57},"start":{"character":15,"line":57}}},{"detail":"type alias","kind":5,"name":"PrefetchBufferResult","range":{"end":{"character":22,"line":61},"start":{"character":0,"line":57}},"selectionRange":{"end":{"character":22,"line":61},"start":{"character":2,"line":61}}},{"children":[{"detail":"int","kind":22,"name":"EB_SKIP_EXTENSION_LOCK","range":{"end":{"character":34,"line":73},"start":{"character":1,"line":73}},"selectionRange":{"end":{"character":23,"line":73},"start":{"character":1,"line":73}}},{"detail":"int","kind":22,"name":"EB_PERFORMING_RECOVERY","range":{"end":{"character":34,"line":76},"start":{"character":1,"line":76}},"selectionRange":{"end":{"character":23,"line":76},"start":{"character":1,"line":76}}},{"detail":"int","kind":22,"name":"EB_CREATE_FORK_IF_NEEDED","range":{"end":{"character":36,"line":82},"start":{"character":1,"line":82}},"selectionRange":{"end":{"character":25,"line":82},"start":{"character":1,"line":82}}},{"detail":"int","kind":22,"name":"EB_LOCK_FIRST","range":{"end":{"character":25,"line":85},"start":{"character":1,"line":85}},"selectionRange":{"end":{"character":14,"line":85},"start":{"character":1,"line":85}}},{"detail":"int","kind":22,"name":"EB_CLEAR_SIZE_CACHE","range":{"end":{"character":31,"line":88},"start":{"character":1,"line":88}},"selectionRange":{"end":{"character":20,"line":88},"start":{"character":1,"line":88}}},{"detail":"int","kind":22,"name":"EB_LOCK_TARGET","range":{"end":{"character":26,"line":91},"start":{"character":1,"line":91}},"selectionRange":{"end":{"character":15,"line":91},"start":{"character":1,"line":91}}}],"detail":"enum","kind":10,"name":"ExtendBufferedFlags","range":{"end":{"character":1,"line":92},"start":{"character":8,"line":66}},"selectionRange":{"end":{"character":32,"line":66},"start":{"character":13,"line":66}}},{"detail":"type alias","kind":5,"name":"ExtendBufferedFlags","range":{"end":{"character":23,"line":92},"start":{"character":0,"line":66}},"selectionRange":{"end":{"character":23,"line":92},"start":{"character":4,"line":92}}},{"children":[{"detail":"Relation","kind":8,"name":"rel","range":{"end":{"character":13,"line":101},"start":{"character":1,"line":101}},"selectionRange":{"end":{"character":13,"line":101},"start":{"character":10,"line":101}}},{"detail":"struct","kind":23,"name":"SMgrRelationData","range":{"end":{"character":24,"line":102},"start":{"character":1,"line":102}},"selectionRange":{"end":{"character":24,"line":102},"start":{"character":8,"line":102}}},{"detail":"struct SMgrRelationData *","kind":8,"name":"smgr","range":{"end":{"character":30,"line":102},"start":{"character":1,"line":102}},"selectionRange":{"end":{"character":30,"line":102},"start":{"character":26,"line":102}}},{"detail":"char","kind":8,"name":"relpersistence","range":{"end":{"character":21,"line":103},"start":{"character":1,"line":103}},"selectionRange":{"end":{"character":21,"line":103},"start":{"character":7,"line":103}}}],"detail":"struct","kind":23,"name":"BufferManagerRelation","range":{"end":{"character":1,"line":104},"start":{"character":8,"line":99}},"selectionRange":{"end":{"character":36,"line":99},"start":{"character":15,"line":99}}},{"detail":"type alias","kind":5,"name":"BufferManagerRelation","range":{"end":{"character":23,"line":104},"start":{"character":0,"line":99}},"selectionRange":{"end":{"character":23,"line":104},"start":{"character":2,"line":104}}},{"children":[{"detail":"Relation","kind":8,"name":"rel","range":{"end":{"character":13,"line":121},"start":{"character":1,"line":121}},"selectionRange":{"end":{"character":13,"line":121},"start":{"character":10,"line":121}}},{"detail":"struct SMgrRelationData *","kind":8,"name":"smgr","range":{"end":{"character":30,"line":122},"start":{"character":1,"line":122}},"selectionRange":{"end":{"character":30,"line":122},"start":{"character":26,"line":122}}},{"detail":"char","kind":8,"name":"smgr_persistence","range":{"end":{"character":23,"line":123},"start":{"character":1,"line":123}},"selectionRange":{"end":{"character":23,"line":123},"start":{"character":7,"line":123}}},{"detail":"ForkNumber","kind":8,"name":"forknum","range":{"end":{"character":19,"line":124},"start":{"character":1,"line":124}},"selectionRange":{"end":{"character":19,"line":124},"start":{"character":12,"line":124}}},{"detail":"BufferAccessStrategy","kind":8,"name":"strategy","range":{"end":{"character":30,"line":125},"start":{"character":1,"line":125}},"selectionRange":{"end":{"character":30,"line":125},"start":{"character":22,"line":125}}},{"detail":"Buffer *","kind":8,"name":"buffers","range":{"end":{"character":19,"line":132},"start":{"character":1,"line":132}},"selectionRange":{"end":{"character":19,"line":132},"start":{"character":12,"line":132}}},{"detail":"BlockNumber","kind":8,"name":"blocknum","range":{"end":{"character":21,"line":133},"start":{"character":1,"line":133}},"selectionRange":{"end":{"character":21,"line":133},"start":{"character":13,"line":133}}},{"detail":"int","kind":8,"name":"flags","range":{"end":{"character":12,"line":134},"start":{"character":1,"line":134}},"selectionRange":{"end":{"character":12,"line":134},"start":{"character":7,"line":134}}},{"detail":"int","kind":8,"name":"nblocks","range":{"end":{"character":15,"line":135},"start":{"character":1,"line":135}},"selectionRange":{"end":{"character":15,"line":135},"start":{"character":8,"line":135}}},{"detail":"int","kind":8,"name":"io_buffers_len","range":{"end":{"character":22,"line":136},"start":{"character":1,"line":136}},"selectionRange":{"end":{"character":22,"line":136},"start":{"character":8,"line":136}}}],"detail":"struct","kind":23,"name":"ReadBuffersOperation","range":{"end":{"character":1,"line":137},"start":{"character":0,"line":114}},"selectionRange":{"end":{"character":27,"line":114},"start":{"character":7,"line":114}}},{"detail":"type alias","kind":5,"name":"ReadBuffersOperation","range":{"end":{"character":56,"line":139},"start":{"character":0,"line":139}},"selectionRange":{"end":{"character":56,"line":139},"start":{"character":36,"line":139}}},{"detail":"struct","kind":23,"name":"WritebackContext","range":{"end":{"character":23,"line":142},"start":{"character":0,"line":142}},"selectionRange":{"end":{"character":23,"line":142},"start":{"character":7,"line":142}}},{"detail":"struct","kind":23,"name":"SMgrRelationData","range":{"end":{"character":23,"line":145},"start":{"character":0,"line":145}},"selectionRange":{"end":{"character":23,"line":145},"start":{"character":7,"line":145}}},{"detail":"int","kind":13,"name":"NBuffers","range":{"end":{"character":31,"line":148},"start":{"character":0,"line":148}},"selectionRange":{"end":{"character":31,"line":148},"start":{"character":23,"line":148}}},{"detail":"int","kind":13,"name":"bool","range":{"end":{"character":23,"line":151},"start":{"character":0,"line":151}},"selectionRange":{"end":{"character":23,"line":151},"start":{"character":19,"line":151}}},{"detail":"int","kind":13,"name":"bgwriter_lru_maxpages","range":{"end":{"character":44,"line":152},"start":{"character":0,"line":152}},"selectionRange":{"end":{"character":44,"line":152},"start":{"character":23,"line":152}}},{"detail":"int","kind":13,"name":"bgwriter_lru_multiplier","range":{"end":{"character":49,"line":153},"start":{"character":0,"line":153}},"selectionRange":{"end":{"character":49,"line":153},"start":{"character":26,"line":153}}},{"detail":"int","kind":13,"name":"bool","range":{"end":{"character":23,"line":154},"start":{"character":0,"line":154}},"selectionRange":{"end":{"character":23,"line":154},"start":{"character":19,"line":154}}},{"detail":"int","kind":13,"name":"effective_io_concurrency","range":{"end":{"character":47,"line":164},"start":{"character":0,"line":164}},"selectionRange":{"end":{"character":47,"line":164},"start":{"character":23,"line":164}}},{"detail":"int","kind":13,"name":"maintenance_io_concurrency","range":{"end":{"character":49,"line":165},"start":{"character":0,"line":165}},"selectionRange":{"end":{"character":49,"line":165},"start":{"character":23,"line":165}}},{"detail":"int","kind":13,"name":"io_combine_limit","range":{"end":{"character":39,"line":169},"start":{"character":0,"line":169}},"selectionRange":{"end":{"character":39,"line":169},"start":{"character":23,"line":169}}},{"detail":"int","kind":13,"name":"checkpoint_flush_after","range":{"end":{"character":45,"line":171},"start":{"character":0,"line":171}},"selectionRange":{"end":{"character":45,"line":171},"start":{"character":23,"line":171}}},{"detail":"int","kind":13,"name":"backend_flush_after","range":{"end":{"character":42,"line":172},"start":{"character":0,"line":172}},"selectionRange":{"end":{"character":42,"line":172},"start":{"character":23,"line":172}}},{"detail":"int","kind":13,"name":"bgwriter_flush_after","range":{"end":{"character":43,"line":173},"start":{"character":0,"line":173}},"selectionRange":{"end":{"character":43,"line":173},"start":{"character":23,"line":173}}},{"detail":"int *","kind":13,"name":"BufferBlocks","range":{"end":{"character":37,"line":176},"start":{"character":0,"line":176}},"selectionRange":{"end":{"character":37,"line":176},"start":{"character":25,"line":176}}},{"detail":"int","kind":13,"name":"NLocBuffer","range":{"end":{"character":33,"line":179},"start":{"character":0,"line":179}},"selectionRange":{"end":{"character":33,"line":179},"start":{"character":23,"line":179}}},{"detail":"int","kind":13,"name":"Block","range":{"end":{"character":24,"line":180},"start":{"character":0,"line":180}},"selectionRange":{"end":{"character":24,"line":180},"start":{"character":19,"line":180}}},{"detail":"int","kind":13,"name":"int32","range":{"end":{"character":24,"line":181},"start":{"character":0,"line":181}},"selectionRange":{"end":{"character":24,"line":181},"start":{"character":19,"line":181}}},{"detail":"PrefetchBufferResult (struct SMgrRelationData *, ForkNumber, BlockNumber)","kind":12,"name":"PrefetchSharedBuffer","range":{"end":{"character":34,"line":202},"start":{"character":0,"line":200}},"selectionRange":{"end":{"character":48,"line":200},"start":{"character":28,"line":200}}},{"detail":"PrefetchBufferResult (Relation, ForkNumber, BlockNumber)","kind":12,"name":"PrefetchBuffer","range":{"end":{"character":34,"line":204},"start":{"character":0,"line":203}},"selectionRange":{"end":{"character":42,"line":203},"start":{"character":28,"line":203}}},{"detail":"int (RelFileLocator, ForkNumber, BlockNumber, Buffer)","kind":12,"name":"ReadRecentBuffer","range":{"end":{"character":51,"line":206},"start":{"character":0,"line":205}},"selectionRange":{"end":{"character":28,"line":205},"start":{"character":12,"line":205}}},{"detail":"Buffer (Relation, BlockNumber)","kind":12,"name":"ReadBuffer","range":{"end":{"character":61,"line":207},"start":{"character":0,"line":207}},"selectionRange":{"end":{"character":24,"line":207},"start":{"character":14,"line":207}}},{"detail":"Buffer (Relation, ForkNumber, BlockNumber, ReadBufferMode, BufferAccessStrategy)","kind":12,"name":"ReadBufferExtended","range":{"end":{"character":39,"line":210},"start":{"character":0,"line":208}},"selectionRange":{"end":{"character":32,"line":208},"start":{"character":14,"line":208}}},{"detail":"Buffer (RelFileLocator, ForkNumber, BlockNumber, ReadBufferMode, BufferAccessStrategy, int)","kind":12,"name":"ReadBufferWithoutRelcache","range":{"end":{"character":25,"line":214},"start":{"character":0,"line":211}},"selectionRange":{"end":{"character":39,"line":211},"start":{"character":14,"line":211}}},{"detail":"int (ReadBuffersOperation *, Buffer *, BlockNumber, int)","kind":12,"name":"StartReadBuffer","range":{"end":{"character":17,"line":219},"start":{"character":0,"line":216}},"selectionRange":{"end":{"character":27,"line":216},"start":{"character":12,"line":216}}},{"detail":"int (ReadBuffersOperation *, Buffer *, BlockNumber, int *, int)","kind":12,"name":"StartReadBuffers","range":{"end":{"character":18,"line":224},"start":{"character":0,"line":220}},"selectionRange":{"end":{"character":28,"line":220},"start":{"character":12,"line":220}}},{"detail":"void (ReadBuffersOperation *)","kind":12,"name":"WaitReadBuffers","range":{"end":{"character":60,"line":225},"start":{"character":0,"line":225}},"selectionRange":{"end":{"character":27,"line":225},"start":{"character":12,"line":225}}},{"detail":"void (Buffer)","kind":12,"name":"ReleaseBuffer","range":{"end":{"character":40,"line":227},"start":{"character":0,"line":227}},"selectionRange":{"end":{"character":25,"line":227},"start":{"character":12,"line":227}}},{"detail":"void (Buffer)","kind":12,"name":"UnlockReleaseBuffer","range":{"end":{"character":46,"line":228},"start":{"character":0,"line":228}},"selectionRange":{"end":{"character":31,"line":228},"start":{"character":12,"line":228}}},{"detail":"int (Buffer)","kind":12,"name":"BufferIsExclusiveLocked","range":{"end":{"character":50,"line":229},"start":{"character":0,"line":229}},"selectionRange":{"end":{"character":35,"line":229},"start":{"character":12,"line":229}}},{"detail":"int (Buffer)","kind":12,"name":"BufferIsDirty","range":{"end":{"character":40,"line":230},"start":{"character":0,"line":230}},"selectionRange":{"end":{"character":25,"line":230},"start":{"character":12,"line":230}}},{"detail":"void (Buffer)","kind":12,"name":"MarkBufferDirty","range":{"end":{"character":42,"line":231},"start":{"character":0,"line":231}},"selectionRange":{"end":{"character":27,"line":231},"start":{"character":12,"line":231}}},{"detail":"void (Buffer)","kind":12,"name":"IncrBufferRefCount","range":{"end":{"character":45,"line":232},"start":{"character":0,"line":232}},"selectionRange":{"end":{"character":30,"line":232},"start":{"character":12,"line":232}}},{"detail":"void (Buffer)","kind":12,"name":"CheckBufferIsPinnedOnce","range":{"end":{"character":50,"line":233},"start":{"character":0,"line":233}},"selectionRange":{"end":{"character":35,"line":233},"start":{"character":12,"line":233}}},{"detail":"Buffer (Buffer, Relation, BlockNumber)","kind":12,"name":"ReleaseAndReadBuffer","range":{"end":{"character":32,"line":235},"start":{"character":0,"line":234}},"selectionRange":{"end":{"character":34,"line":234},"start":{"character":14,"line":234}}},{"detail":"Buffer (BufferManagerRelation, ForkNumber, BufferAccessStrategy, int)","kind":12,"name":"ExtendBufferedRel","range":{"end":{"character":21,"line":240},"start":{"character":0,"line":237}},"selectionRange":{"end":{"character":31,"line":237},"start":{"character":14,"line":237}}},{"detail":"BlockNumber (BufferManagerRelation, ForkNumber, BufferAccessStrategy, int, int, Buffer *, int *)","kind":12,"name":"ExtendBufferedRelBy","range":{"end":{"character":32,"line":247},"start":{"character":0,"line":241}},"selectionRange":{"end":{"character":38,"line":241},"start":{"character":19,"line":241}}},{"detail":"Buffer (BufferManagerRelation, ForkNumber, BufferAccessStrategy, int, BlockNumber, ReadBufferMode)","kind":12,"name":"ExtendBufferedRelTo","range":{"end":{"character":30,"line":253},"start":{"character":0,"line":248}},"selectionRange":{"end":{"character":33,"line":248},"start":{"character":14,"line":248}}},{"detail":"void (void)","kind":12,"name":"InitBufferPoolAccess","range":{"end":{"character":38,"line":255},"start":{"character":0,"line":255}},"selectionRange":{"end":{"character":32,"line":255},"start":{"character":12,"line":255}}},{"detail":"void (int)","kind":12,"name":"AtEOXact_Buffers","range":{"end":{"character":43,"line":256},"start":{"character":0,"line":256}},"selectionRange":{"end":{"character":28,"line":256},"start":{"character":12,"line":256}}},{"detail":"char *(Buffer)","kind":12,"name":"DebugPrintBufferRefcount","range":{"end":{"character":52,"line":257},"start":{"character":0,"line":257}},"selectionRange":{"end":{"character":37,"line":257},"start":{"character":13,"line":257}}},{"detail":"void (int)","kind":12,"name":"CheckPointBuffers","range":{"end":{"character":40,"line":258},"start":{"character":0,"line":258}},"selectionRange":{"end":{"character":29,"line":258},"start":{"character":12,"line":258}}},{"detail":"BlockNumber (Buffer)","kind":12,"name":"BufferGetBlockNumber","range":{"end":{"character":54,"line":259},"start":{"character":0,"line":259}},"selectionRange":{"end":{"character":39,"line":259},"start":{"character":19,"line":259}}},{"detail":"BlockNumber (Relation, ForkNumber)","kind":12,"name":"RelationGetNumberOfBlocksInFork","range":{"end":{"character":34,"line":261},"start":{"character":0,"line":260}},"selectionRange":{"end":{"character":50,"line":260},"start":{"character":19,"line":260}}},{"detail":"void (Buffer)","kind":12,"name":"FlushOneBuffer","range":{"end":{"character":41,"line":262},"start":{"character":0,"line":262}},"selectionRange":{"end":{"character":26,"line":262},"start":{"character":12,"line":262}}},{"detail":"void (Relation)","kind":12,"name":"FlushRelationBuffers","range":{"end":{"character":46,"line":263},"start":{"character":0,"line":263}},"selectionRange":{"end":{"character":32,"line":263},"start":{"character":12,"line":263}}},{"detail":"void (struct SMgrRelationData **, int)","kind":12,"name":"FlushRelationsAllBuffers","range":{"end":{"character":80,"line":264},"start":{"character":0,"line":264}},"selectionRange":{"end":{"character":36,"line":264},"start":{"character":12,"line":264}}},{"detail":"void (RelFileLocator, RelFileLocator, int)","kind":12,"name":"CreateAndCopyRelationData","range":{"end":{"character":26,"line":267},"start":{"character":0,"line":265}},"selectionRange":{"end":{"character":37,"line":265},"start":{"character":12,"line":265}}},{"detail":"void (int)","kind":12,"name":"FlushDatabaseBuffers","range":{"end":{"character":42,"line":268},"start":{"character":0,"line":268}},"selectionRange":{"end":{"character":32,"line":268},"start":{"character":12,"line":268}}},{"detail":"void (struct SMgrRelationData *, ForkNumber *, int, BlockNumber *)","kind":12,"name":"DropRelationBuffers","range":{"end":{"character":47,"line":271},"start":{"character":0,"line":269}},"selectionRange":{"end":{"character":31,"line":269},"start":{"character":12,"line":269}}},{"detail":"void (struct SMgrRelationData **, int)","kind":12,"name":"DropRelationsAllBuffers","range":{"end":{"character":23,"line":273},"start":{"character":0,"line":272}},"selectionRange":{"end":{"character":35,"line":272},"start":{"character":12,"line":272}}},{"detail":"void (int)","kind":12,"name":"DropDatabaseBuffers","range":{"end":{"character":41,"line":274},"start":{"character":0,"line":274}},"selectionRange":{"end":{"character":31,"line":274},"start":{"character":12,"line":274}}},{"detail":"int (Buffer)","kind":12,"name":"BufferIsPermanent","range":{"end":{"character":44,"line":279},"start":{"character":0,"line":279}},"selectionRange":{"end":{"character":29,"line":279},"start":{"character":12,"line":279}}},{"detail":"XLogRecPtr (Buffer)","kind":12,"name":"BufferGetLSNAtomic","range":{"end":{"character":51,"line":280},"start":{"character":0,"line":280}},"selectionRange":{"end":{"character":36,"line":280},"start":{"character":18,"line":280}}},{"detail":"void (Buffer, RelFileLocator *, ForkNumber *, BlockNumber *)","kind":12,"name":"BufferGetTag","range":{"end":{"character":48,"line":286},"start":{"character":0,"line":285}},"selectionRange":{"end":{"character":24,"line":285},"start":{"character":12,"line":285}}},{"detail":"void (Buffer, int)","kind":12,"name":"MarkBufferDirtyHint","range":{"end":{"character":63,"line":288},"start":{"character":0,"line":288}},"selectionRange":{"end":{"character":31,"line":288},"start":{"character":12,"line":288}}},{"detail":"void (void)","kind":12,"name":"UnlockBuffers","range":{"end":{"character":31,"line":290},"start":{"character":0,"line":290}},"selectionRange":{"end":{"character":25,"line":290},"start":{"character":12,"line":290}}},{"detail":"void (Buffer, int)","kind":12,"name":"LockBuffer","range":{"end":{"character":47,"line":291},"start":{"character":0,"line":291}},"selectionRange":{"end":{"character":22,"line":291},"start":{"character":12,"line":291}}},{"detail":"int (Buffer)","kind":12,"name":"ConditionalLockBuffer","range":{"end":{"character":48,"line":292},"start":{"character":0,"line":292}},"selectionRange":{"end":{"character":33,"line":292},"start":{"character":12,"line":292}}},{"detail":"void (Buffer)","kind":12,"name":"LockBufferForCleanup","range":{"end":{"character":47,"line":293},"start":{"character":0,"line":293}},"selectionRange":{"end":{"character":32,"line":293},"start":{"character":12,"line":293}}},{"detail":"int (Buffer)","kind":12,"name":"ConditionalLockBufferForCleanup","range":{"end":{"character":58,"line":294},"start":{"character":0,"line":294}},"selectionRange":{"end":{"character":43,"line":294},"start":{"character":12,"line":294}}},{"detail":"int (Buffer)","kind":12,"name":"IsBufferCleanupOK","range":{"end":{"character":44,"line":295},"start":{"character":0,"line":295}},"selectionRange":{"end":{"character":29,"line":295},"start":{"character":12,"line":295}}},{"detail":"int (void)","kind":12,"name":"HoldingBufferPinThatDelaysRecovery","range":{"end":{"character":52,"line":296},"start":{"character":0,"line":296}},"selectionRange":{"end":{"character":46,"line":296},"start":{"character":12,"line":296}}},{"detail":"int (struct WritebackContext *)","kind":12,"name":"BgBufferSync","range":{"end":{"character":61,"line":298},"start":{"character":0,"line":298}},"selectionRange":{"end":{"character":24,"line":298},"start":{"character":12,"line":298}}},{"detail":"void (int *)","kind":12,"name":"LimitAdditionalPins","range":{"end":{"character":56,"line":300},"start":{"character":0,"line":300}},"selectionRange":{"end":{"character":31,"line":300},"start":{"character":12,"line":300}}},{"detail":"void (int *)","kind":12,"name":"LimitAdditionalLocalPins","range":{"end":{"character":61,"line":301},"start":{"character":0,"line":301}},"selectionRange":{"end":{"character":36,"line":301},"start":{"character":12,"line":301}}},{"detail":"int (Buffer)","kind":12,"name":"EvictUnpinnedBuffer","range":{"end":{"character":43,"line":303},"start":{"character":0,"line":303}},"selectionRange":{"end":{"character":31,"line":303},"start":{"character":12,"line":303}}},{"detail":"void (void)","kind":12,"name":"InitBufferPool","range":{"end":{"character":32,"line":306},"start":{"character":0,"line":306}},"selectionRange":{"end":{"character":26,"line":306},"start":{"character":12,"line":306}}},{"detail":"int (void)","kind":12,"name":"BufferShmemSize","range":{"end":{"character":33,"line":307},"start":{"character":0,"line":307}},"selectionRange":{"end":{"character":27,"line":307},"start":{"character":12,"line":307}}},{"detail":"void (void)","kind":12,"name":"AtProcExit_LocalBuffers","range":{"end":{"character":41,"line":310},"start":{"character":0,"line":310}},"selectionRange":{"end":{"character":35,"line":310},"start":{"character":12,"line":310}}},{"detail":"BufferAccessStrategy (BufferAccessStrategyType)","kind":12,"name":"GetAccessStrategy","range":{"end":{"character":77,"line":314},"start":{"character":0,"line":314}},"selectionRange":{"end":{"character":45,"line":314},"start":{"character":28,"line":314}}},{"detail":"BufferAccessStrategy (BufferAccessStrategyType, int)","kind":12,"name":"GetAccessStrategyWithSize","range":{"end":{"character":32,"line":316},"start":{"character":0,"line":315}},"selectionRange":{"end":{"character":53,"line":315},"start":{"character":28,"line":315}}},{"detail":"int (BufferAccessStrategy)","kind":12,"name":"GetAccessStrategyBufferCount","range":{"end":{"character":70,"line":317},"start":{"character":0,"line":317}},"selectionRange":{"end":{"character":39,"line":317},"start":{"character":11,"line":317}}},{"detail":"int (BufferAccessStrategy)","kind":12,"name":"GetAccessStrategyPinLimit","range":{"end":{"character":67,"line":318},"start":{"character":0,"line":318}},"selectionRange":{"end":{"character":36,"line":318},"start":{"character":11,"line":318}}},{"detail":"void (BufferAccessStrategy)","kind":12,"name":"FreeAccessStrategy","range":{"end":{"character":61,"line":320},"start":{"character":0,"line":320}},"selectionRange":{"end":{"character":30,"line":320},"start":{"character":12,"line":320}}},{"detail":"int (Buffer)","kind":12,"name":"BufferIsValid","range":{"end":{"character":1,"line":360},"start":{"character":0,"line":353}},"selectionRange":{"end":{"character":13,"line":354},"start":{"character":0,"line":354}}},{"detail":"Block (Buffer)","kind":12,"name":"BufferGetBlock","range":{"end":{"character":1,"line":378},"start":{"character":0,"line":369}},"selectionRange":{"end":{"character":14,"line":370},"start":{"character":0,"line":370}}},{"detail":"int (Buffer)","kind":12,"name":"BufferGetPageSize","range":{"end":{"character":1,"line":396},"start":{"character":0,"line":391}},"selectionRange":{"end":{"character":17,"line":392},"start":{"character":0,"line":392}}},{"detail":"Page (Buffer)","kind":12,"name":"BufferGetPage","range":{"end":{"character":1,"line":406},"start":{"character":0,"line":402}},"selectionRange":{"end":{"character":13,"line":403},"start":{"character":0,"line":403}}}]}

V[04:00:57.732] ASTWorker running codeAction on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:57.733] --> reply:textDocument/codeAction(7) 8 ms
V[04:00:57.733] >>> {"id":7,"jsonrpc":"2.0","result":[]}

V[04:00:57.733] ASTWorker running DocumentLinks on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:57.733] --> reply:textDocument/documentLink(8) 2 ms
V[04:00:57.733] >>> {"id":8,"jsonrpc":"2.0","result":[{"range":{"end":{"character":26,"line":16},"start":{"character":9,"line":16}},"target":"file:///root/src/postgres/src/include/port/pg_iovec.h"},{"range":{"end":{"character":26,"line":17},"start":{"character":9,"line":17}},"target":"file:///root/src/postgres/src/include/storage/block.h"},{"range":{"end":{"character":24,"line":18},"start":{"character":9,"line":18}},"target":"file:///root/src/postgres/src/include/storage/buf.h"},{"range":{"end":{"character":28,"line":19},"start":{"character":9,"line":19}},"target":"file:///root/src/postgres/src/include/storage/bufpage.h"},{"range":{"end":{"character":35,"line":20},"start":{"character":9,"line":20}},"target":"file:///root/src/postgres/src/include/storage/relfilelocator.h"},{"range":{"end":{"character":27,"line":21},"start":{"character":9,"line":21}},"target":"file:///root/src/postgres/src/include/utils/relcache.h"},{"range":{"end":{"character":26,"line":22},"start":{"character":9,"line":22}},"target":"file:///root/src/postgres/src/include/utils/snapmgr.h"}]}

I[04:00:57.733] --> textDocument/clangd.fileStatus
V[04:00:57.733] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}

V[04:00:57.802] BackgroundIndex: building version 1 after loading index from disk
V[04:00:57.911] <<< {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"off"}}

I[04:00:57.911] <-- $/setTrace
I[04:00:57.911] unhandled notification $/setTrace
V[04:00:58.199] BackgroundIndex: serving version 1 (169494480 bytes)
I[04:00:58.245] --> $/progress
V[04:00:58.245] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}}

I[04:00:58.245] --> $/progress
V[04:00:58.245] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"end"}}}

V[04:00:59.239] <<< {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"off"}}

I[04:00:59.239] <-- $/setTrace
I[04:00:59.239] unhandled notification $/setTrace
V[04:00:59.242] <<< {"id":9,"jsonrpc":"2.0","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:59.242] <-- textDocument/documentSymbol(9)
V[04:00:59.242] <<< {"id":10,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[],"triggerKind":2},"range":{"end":{"character":35,"line":73},"start":{"character":35,"line":73}},"textDocument":{"uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}}

I[04:00:59.242] <-- textDocument/codeAction(10)
V[04:00:59.242] ASTWorker running DocumentSymbols on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:59.246] --> reply:textDocument/documentSymbol(9) 3 ms
V[04:00:59.246] >>> {"id":9,"jsonrpc":"2.0","result":[{"detail":"type alias","kind":5,"name":"Block","range":{"end":{"character":19,"line":24},"start":{"character":0,"line":24}},"selectionRange":{"end":{"character":19,"line":24},"start":{"character":14,"line":24}}},{"children":[{"detail":"int","kind":22,"name":"BAS_NORMAL","range":{"end":{"character":11,"line":34},"start":{"character":1,"line":34}},"selectionRange":{"end":{"character":11,"line":34},"start":{"character":1,"line":34}}},{"detail":"int","kind":22,"name":"BAS_BULKREAD","range":{"end":{"character":13,"line":35},"start":{"character":1,"line":35}},"selectionRange":{"end":{"character":13,"line":35},"start":{"character":1,"line":35}}},{"detail":"int","kind":22,"name":"BAS_BULKWRITE","range":{"end":{"character":14,"line":37},"start":{"character":1,"line":37}},"selectionRange":{"end":{"character":14,"line":37},"start":{"character":1,"line":37}}},{"detail":"int","kind":22,"name":"BAS_VACUUM","range":{"end":{"character":11,"line":38},"start":{"character":1,"line":38}},"selectionRange":{"end":{"character":11,"line":38},"start":{"character":1,"line":38}}}],"detail":"enum","kind":10,"name":"BufferAccessStrategyType","range":{"end":{"character":1,"line":39},"start":{"character":8,"line":32}},"selectionRange":{"end":{"character":37,"line":32},"start":{"character":13,"line":32}}},{"detail":"type alias","kind":5,"name":"BufferAccessStrategyType","range":{"end":{"character":26,"line":39},"start":{"character":0,"line":32}},"selectionRange":{"end":{"character":26,"line":39},"start":{"character":2,"line":39}}},{"children":[{"detail":"int","kind":22,"name":"RBM_NORMAL","range":{"end":{"character":11,"line":44},"start":{"character":1,"line":44}},"selectionRange":{"end":{"character":11,"line":44},"start":{"character":1,"line":44}}},{"detail":"int","kind":22,"name":"RBM_ZERO_AND_LOCK","range":{"end":{"character":18,"line":45},"start":{"character":1,"line":45}},"selectionRange":{"end":{"character":18,"line":45},"start":{"character":1,"line":45}}},{"detail":"int","kind":22,"name":"RBM_ZERO_AND_CLEANUP_LOCK","range":{"end":{"character":26,"line":47},"start":{"character":1,"line":47}},"selectionRange":{"end":{"character":26,"line":47},"start":{"character":1,"line":47}}},{"detail":"int","kind":22,"name":"RBM_ZERO_ON_ERROR","range":{"end":{"character":18,"line":49},"start":{"character":1,"line":49}},"selectionRange":{"end":{"character":18,"line":49},"start":{"character":1,"line":49}}},{"detail":"int","kind":22,"name":"RBM_NORMAL_NO_LOG","range":{"end":{"character":18,"line":50},"start":{"character":1,"line":50}},"selectionRange":{"end":{"character":18,"line":50},"start":{"character":1,"line":50}}}],"detail":"enum","kind":10,"name":"(anonymous enum)","range":{"end":{"character":1,"line":52},"start":{"character":8,"line":42}},"selectionRange":{"end":{"character":12,"line":42},"start":{"character":8,"line":42}}},{"detail":"type alias","kind":5,"name":"ReadBufferMode","range":{"end":{"character":16,"line":52},"start":{"character":0,"line":42}},"selectionRange":{"end":{"character":16,"line":52},"start":{"character":2,"line":52}}},{"children":[{"detail":"Buffer","kind":8,"name":"recent_buffer","range":{"end":{"character":22,"line":59},"start":{"character":1,"line":59}},"selectionRange":{"end":{"character":22,"line":59},"start":{"character":9,"line":59}}},{"detail":"int","kind":8,"name":"initiated_io","range":{"end":{"character":19,"line":60},"start":{"character":1,"line":60}},"selectionRange":{"end":{"character":19,"line":60},"start":{"character":7,"line":60}}}],"detail":"struct","kind":23,"name":"PrefetchBufferResult","range":{"end":{"character":1,"line":61},"start":{"character":8,"line":57}},"selectionRange":{"end":{"character":35,"line":57},"start":{"character":15,"line":57}}},{"detail":"type alias","kind":5,"name":"PrefetchBufferResult","range":{"end":{"character":22,"line":61},"start":{"character":0,"line":57}},"selectionRange":{"end":{"character":22,"line":61},"start":{"character":2,"line":61}}},{"children":[{"detail":"int","kind":22,"name":"EB_SKIP_EXTENSION_LOCK","range":{"end":{"character":34,"line":73},"start":{"character":1,"line":73}},"selectionRange":{"end":{"character":23,"line":73},"start":{"character":1,"line":73}}},{"detail":"int","kind":22,"name":"EB_PERFORMING_RECOVERY","range":{"end":{"character":34,"line":76},"start":{"character":1,"line":76}},"selectionRange":{"end":{"character":23,"line":76},"start":{"character":1,"line":76}}},{"detail":"int","kind":22,"name":"EB_CREATE_FORK_IF_NEEDED","range":{"end":{"character":36,"line":82},"start":{"character":1,"line":82}},"selectionRange":{"end":{"character":25,"line":82},"start":{"character":1,"line":82}}},{"detail":"int","kind":22,"name":"EB_LOCK_FIRST","range":{"end":{"character":25,"line":85},"start":{"character":1,"line":85}},"selectionRange":{"end":{"character":14,"line":85},"start":{"character":1,"line":85}}},{"detail":"int","kind":22,"name":"EB_CLEAR_SIZE_CACHE","range":{"end":{"character":31,"line":88},"start":{"character":1,"line":88}},"selectionRange":{"end":{"character":20,"line":88},"start":{"character":1,"line":88}}},{"detail":"int","kind":22,"name":"EB_LOCK_TARGET","range":{"end":{"character":26,"line":91},"start":{"character":1,"line":91}},"selectionRange":{"end":{"character":15,"line":91},"start":{"character":1,"line":91}}}],"detail":"enum","kind":10,"name":"ExtendBufferedFlags","range":{"end":{"character":1,"line":92},"start":{"character":8,"line":66}},"selectionRange":{"end":{"character":32,"line":66},"start":{"character":13,"line":66}}},{"detail":"type alias","kind":5,"name":"ExtendBufferedFlags","range":{"end":{"character":23,"line":92},"start":{"character":0,"line":66}},"selectionRange":{"end":{"character":23,"line":92},"start":{"character":4,"line":92}}},{"children":[{"detail":"Relation","kind":8,"name":"rel","range":{"end":{"character":13,"line":101},"start":{"character":1,"line":101}},"selectionRange":{"end":{"character":13,"line":101},"start":{"character":10,"line":101}}},{"detail":"struct","kind":23,"name":"SMgrRelationData","range":{"end":{"character":24,"line":102},"start":{"character":1,"line":102}},"selectionRange":{"end":{"character":24,"line":102},"start":{"character":8,"line":102}}},{"detail":"struct SMgrRelationData *","kind":8,"name":"smgr","range":{"end":{"character":30,"line":102},"start":{"character":1,"line":102}},"selectionRange":{"end":{"character":30,"line":102},"start":{"character":26,"line":102}}},{"detail":"char","kind":8,"name":"relpersistence","range":{"end":{"character":21,"line":103},"start":{"character":1,"line":103}},"selectionRange":{"end":{"character":21,"line":103},"start":{"character":7,"line":103}}}],"detail":"struct","kind":23,"name":"BufferManagerRelation","range":{"end":{"character":1,"line":104},"start":{"character":8,"line":99}},"selectionRange":{"end":{"character":36,"line":99},"start":{"character":15,"line":99}}},{"detail":"type alias","kind":5,"name":"BufferManagerRelation","range":{"end":{"character":23,"line":104},"start":{"character":0,"line":99}},"selectionRange":{"end":{"character":23,"line":104},"start":{"character":2,"line":104}}},{"children":[{"detail":"Relation","kind":8,"name":"rel","range":{"end":{"character":13,"line":121},"start":{"character":1,"line":121}},"selectionRange":{"end":{"character":13,"line":121},"start":{"character":10,"line":121}}},{"detail":"struct SMgrRelationData *","kind":8,"name":"smgr","range":{"end":{"character":30,"line":122},"start":{"character":1,"line":122}},"selectionRange":{"end":{"character":30,"line":122},"start":{"character":26,"line":122}}},{"detail":"char","kind":8,"name":"smgr_persistence","range":{"end":{"character":23,"line":123},"start":{"character":1,"line":123}},"selectionRange":{"end":{"character":23,"line":123},"start":{"character":7,"line":123}}},{"detail":"ForkNumber","kind":8,"name":"forknum","range":{"end":{"character":19,"line":124},"start":{"character":1,"line":124}},"selectionRange":{"end":{"character":19,"line":124},"start":{"character":12,"line":124}}},{"detail":"BufferAccessStrategy","kind":8,"name":"strategy","range":{"end":{"character":30,"line":125},"start":{"character":1,"line":125}},"selectionRange":{"end":{"character":30,"line":125},"start":{"character":22,"line":125}}},{"detail":"Buffer *","kind":8,"name":"buffers","range":{"end":{"character":19,"line":132},"start":{"character":1,"line":132}},"selectionRange":{"end":{"character":19,"line":132},"start":{"character":12,"line":132}}},{"detail":"BlockNumber","kind":8,"name":"blocknum","range":{"end":{"character":21,"line":133},"start":{"character":1,"line":133}},"selectionRange":{"end":{"character":21,"line":133},"start":{"character":13,"line":133}}},{"detail":"int","kind":8,"name":"flags","range":{"end":{"character":12,"line":134},"start":{"character":1,"line":134}},"selectionRange":{"end":{"character":12,"line":134},"start":{"character":7,"line":134}}},{"detail":"int","kind":8,"name":"nblocks","range":{"end":{"character":15,"line":135},"start":{"character":1,"line":135}},"selectionRange":{"end":{"character":15,"line":135},"start":{"character":8,"line":135}}},{"detail":"int","kind":8,"name":"io_buffers_len","range":{"end":{"character":22,"line":136},"start":{"character":1,"line":136}},"selectionRange":{"end":{"character":22,"line":136},"start":{"character":8,"line":136}}}],"detail":"struct","kind":23,"name":"ReadBuffersOperation","range":{"end":{"character":1,"line":137},"start":{"character":0,"line":114}},"selectionRange":{"end":{"character":27,"line":114},"start":{"character":7,"line":114}}},{"detail":"type alias","kind":5,"name":"ReadBuffersOperation","range":{"end":{"character":56,"line":139},"start":{"character":0,"line":139}},"selectionRange":{"end":{"character":56,"line":139},"start":{"character":36,"line":139}}},{"detail":"struct","kind":23,"name":"WritebackContext","range":{"end":{"character":23,"line":142},"start":{"character":0,"line":142}},"selectionRange":{"end":{"character":23,"line":142},"start":{"character":7,"line":142}}},{"detail":"struct","kind":23,"name":"SMgrRelationData","range":{"end":{"character":23,"line":145},"start":{"character":0,"line":145}},"selectionRange":{"end":{"character":23,"line":145},"start":{"character":7,"line":145}}},{"detail":"int","kind":13,"name":"NBuffers","range":{"end":{"character":31,"line":148},"start":{"character":0,"line":148}},"selectionRange":{"end":{"character":31,"line":148},"start":{"character":23,"line":148}}},{"detail":"int","kind":13,"name":"bool","range":{"end":{"character":23,"line":151},"start":{"character":0,"line":151}},"selectionRange":{"end":{"character":23,"line":151},"start":{"character":19,"line":151}}},{"detail":"int","kind":13,"name":"bgwriter_lru_maxpages","range":{"end":{"character":44,"line":152},"start":{"character":0,"line":152}},"selectionRange":{"end":{"character":44,"line":152},"start":{"character":23,"line":152}}},{"detail":"int","kind":13,"name":"bgwriter_lru_multiplier","range":{"end":{"character":49,"line":153},"start":{"character":0,"line":153}},"selectionRange":{"end":{"character":49,"line":153},"start":{"character":26,"line":153}}},{"detail":"int","kind":13,"name":"bool","range":{"end":{"character":23,"line":154},"start":{"character":0,"line":154}},"selectionRange":{"end":{"character":23,"line":154},"start":{"character":19,"line":154}}},{"detail":"int","kind":13,"name":"effective_io_concurrency","range":{"end":{"character":47,"line":164},"start":{"character":0,"line":164}},"selectionRange":{"end":{"character":47,"line":164},"start":{"character":23,"line":164}}},{"detail":"int","kind":13,"name":"maintenance_io_concurrency","range":{"end":{"character":49,"line":165},"start":{"character":0,"line":165}},"selectionRange":{"end":{"character":49,"line":165},"start":{"character":23,"line":165}}},{"detail":"int","kind":13,"name":"io_combine_limit","range":{"end":{"character":39,"line":169},"start":{"character":0,"line":169}},"selectionRange":{"end":{"character":39,"line":169},"start":{"character":23,"line":169}}},{"detail":"int","kind":13,"name":"checkpoint_flush_after","range":{"end":{"character":45,"line":171},"start":{"character":0,"line":171}},"selectionRange":{"end":{"character":45,"line":171},"start":{"character":23,"line":171}}},{"detail":"int","kind":13,"name":"backend_flush_after","range":{"end":{"character":42,"line":172},"start":{"character":0,"line":172}},"selectionRange":{"end":{"character":42,"line":172},"start":{"character":23,"line":172}}},{"detail":"int","kind":13,"name":"bgwriter_flush_after","range":{"end":{"character":43,"line":173},"start":{"character":0,"line":173}},"selectionRange":{"end":{"character":43,"line":173},"start":{"character":23,"line":173}}},{"detail":"int *","kind":13,"name":"BufferBlocks","range":{"end":{"character":37,"line":176},"start":{"character":0,"line":176}},"selectionRange":{"end":{"character":37,"line":176},"start":{"character":25,"line":176}}},{"detail":"int","kind":13,"name":"NLocBuffer","range":{"end":{"character":33,"line":179},"start":{"character":0,"line":179}},"selectionRange":{"end":{"character":33,"line":179},"start":{"character":23,"line":179}}},{"detail":"int","kind":13,"name":"Block","range":{"end":{"character":24,"line":180},"start":{"character":0,"line":180}},"selectionRange":{"end":{"character":24,"line":180},"start":{"character":19,"line":180}}},{"detail":"int","kind":13,"name":"int32","range":{"end":{"character":24,"line":181},"start":{"character":0,"line":181}},"selectionRange":{"end":{"character":24,"line":181},"start":{"character":19,"line":181}}},{"detail":"PrefetchBufferResult (struct SMgrRelationData *, ForkNumber, BlockNumber)","kind":12,"name":"PrefetchSharedBuffer","range":{"end":{"character":34,"line":202},"start":{"character":0,"line":200}},"selectionRange":{"end":{"character":48,"line":200},"start":{"character":28,"line":200}}},{"detail":"PrefetchBufferResult (Relation, ForkNumber, BlockNumber)","kind":12,"name":"PrefetchBuffer","range":{"end":{"character":34,"line":204},"start":{"character":0,"line":203}},"selectionRange":{"end":{"character":42,"line":203},"start":{"character":28,"line":203}}},{"detail":"int (RelFileLocator, ForkNumber, BlockNumber, Buffer)","kind":12,"name":"ReadRecentBuffer","range":{"end":{"character":51,"line":206},"start":{"character":0,"line":205}},"selectionRange":{"end":{"character":28,"line":205},"start":{"character":12,"line":205}}},{"detail":"Buffer (Relation, BlockNumber)","kind":12,"name":"ReadBuffer","range":{"end":{"character":61,"line":207},"start":{"character":0,"line":207}},"selectionRange":{"end":{"character":24,"line":207},"start":{"character":14,"line":207}}},{"detail":"Buffer (Relation, ForkNumber, BlockNumber, ReadBufferMode, BufferAccessStrategy)","kind":12,"name":"ReadBufferExtended","range":{"end":{"character":39,"line":210},"start":{"character":0,"line":208}},"selectionRange":{"end":{"character":32,"line":208},"start":{"character":14,"line":208}}},{"detail":"Buffer (RelFileLocator, ForkNumber, BlockNumber, ReadBufferMode, BufferAccessStrategy, int)","kind":12,"name":"ReadBufferWithoutRelcache","range":{"end":{"character":25,"line":214},"start":{"character":0,"line":211}},"selectionRange":{"end":{"character":39,"line":211},"start":{"character":14,"line":211}}},{"detail":"int (ReadBuffersOperation *, Buffer *, BlockNumber, int)","kind":12,"name":"StartReadBuffer","range":{"end":{"character":17,"line":219},"start":{"character":0,"line":216}},"selectionRange":{"end":{"character":27,"line":216},"start":{"character":12,"line":216}}},{"detail":"int (ReadBuffersOperation *, Buffer *, BlockNumber, int *, int)","kind":12,"name":"StartReadBuffers","range":{"end":{"character":18,"line":224},"start":{"character":0,"line":220}},"selectionRange":{"end":{"character":28,"line":220},"start":{"character":12,"line":220}}},{"detail":"void (ReadBuffersOperation *)","kind":12,"name":"WaitReadBuffers","range":{"end":{"character":60,"line":225},"start":{"character":0,"line":225}},"selectionRange":{"end":{"character":27,"line":225},"start":{"character":12,"line":225}}},{"detail":"void (Buffer)","kind":12,"name":"ReleaseBuffer","range":{"end":{"character":40,"line":227},"start":{"character":0,"line":227}},"selectionRange":{"end":{"character":25,"line":227},"start":{"character":12,"line":227}}},{"detail":"void (Buffer)","kind":12,"name":"UnlockReleaseBuffer","range":{"end":{"character":46,"line":228},"start":{"character":0,"line":228}},"selectionRange":{"end":{"character":31,"line":228},"start":{"character":12,"line":228}}},{"detail":"int (Buffer)","kind":12,"name":"BufferIsExclusiveLocked","range":{"end":{"character":50,"line":229},"start":{"character":0,"line":229}},"selectionRange":{"end":{"character":35,"line":229},"start":{"character":12,"line":229}}},{"detail":"int (Buffer)","kind":12,"name":"BufferIsDirty","range":{"end":{"character":40,"line":230},"start":{"character":0,"line":230}},"selectionRange":{"end":{"character":25,"line":230},"start":{"character":12,"line":230}}},{"detail":"void (Buffer)","kind":12,"name":"MarkBufferDirty","range":{"end":{"character":42,"line":231},"start":{"character":0,"line":231}},"selectionRange":{"end":{"character":27,"line":231},"start":{"character":12,"line":231}}},{"detail":"void (Buffer)","kind":12,"name":"IncrBufferRefCount","range":{"end":{"character":45,"line":232},"start":{"character":0,"line":232}},"selectionRange":{"end":{"character":30,"line":232},"start":{"character":12,"line":232}}},{"detail":"void (Buffer)","kind":12,"name":"CheckBufferIsPinnedOnce","range":{"end":{"character":50,"line":233},"start":{"character":0,"line":233}},"selectionRange":{"end":{"character":35,"line":233},"start":{"character":12,"line":233}}},{"detail":"Buffer (Buffer, Relation, BlockNumber)","kind":12,"name":"ReleaseAndReadBuffer","range":{"end":{"character":32,"line":235},"start":{"character":0,"line":234}},"selectionRange":{"end":{"character":34,"line":234},"start":{"character":14,"line":234}}},{"detail":"Buffer (BufferManagerRelation, ForkNumber, BufferAccessStrategy, int)","kind":12,"name":"ExtendBufferedRel","range":{"end":{"character":21,"line":240},"start":{"character":0,"line":237}},"selectionRange":{"end":{"character":31,"line":237},"start":{"character":14,"line":237}}},{"detail":"BlockNumber (BufferManagerRelation, ForkNumber, BufferAccessStrategy, int, int, Buffer *, int *)","kind":12,"name":"ExtendBufferedRelBy","range":{"end":{"character":32,"line":247},"start":{"character":0,"line":241}},"selectionRange":{"end":{"character":38,"line":241},"start":{"character":19,"line":241}}},{"detail":"Buffer (BufferManagerRelation, ForkNumber, BufferAccessStrategy, int, BlockNumber, ReadBufferMode)","kind":12,"name":"ExtendBufferedRelTo","range":{"end":{"character":30,"line":253},"start":{"character":0,"line":248}},"selectionRange":{"end":{"character":33,"line":248},"start":{"character":14,"line":248}}},{"detail":"void (void)","kind":12,"name":"InitBufferPoolAccess","range":{"end":{"character":38,"line":255},"start":{"character":0,"line":255}},"selectionRange":{"end":{"character":32,"line":255},"start":{"character":12,"line":255}}},{"detail":"void (int)","kind":12,"name":"AtEOXact_Buffers","range":{"end":{"character":43,"line":256},"start":{"character":0,"line":256}},"selectionRange":{"end":{"character":28,"line":256},"start":{"character":12,"line":256}}},{"detail":"char *(Buffer)","kind":12,"name":"DebugPrintBufferRefcount","range":{"end":{"character":52,"line":257},"start":{"character":0,"line":257}},"selectionRange":{"end":{"character":37,"line":257},"start":{"character":13,"line":257}}},{"detail":"void (int)","kind":12,"name":"CheckPointBuffers","range":{"end":{"character":40,"line":258},"start":{"character":0,"line":258}},"selectionRange":{"end":{"character":29,"line":258},"start":{"character":12,"line":258}}},{"detail":"BlockNumber (Buffer)","kind":12,"name":"BufferGetBlockNumber","range":{"end":{"character":54,"line":259},"start":{"character":0,"line":259}},"selectionRange":{"end":{"character":39,"line":259},"start":{"character":19,"line":259}}},{"detail":"BlockNumber (Relation, ForkNumber)","kind":12,"name":"RelationGetNumberOfBlocksInFork","range":{"end":{"character":34,"line":261},"start":{"character":0,"line":260}},"selectionRange":{"end":{"character":50,"line":260},"start":{"character":19,"line":260}}},{"detail":"void (Buffer)","kind":12,"name":"FlushOneBuffer","range":{"end":{"character":41,"line":262},"start":{"character":0,"line":262}},"selectionRange":{"end":{"character":26,"line":262},"start":{"character":12,"line":262}}},{"detail":"void (Relation)","kind":12,"name":"FlushRelationBuffers","range":{"end":{"character":46,"line":263},"start":{"character":0,"line":263}},"selectionRange":{"end":{"character":32,"line":263},"start":{"character":12,"line":263}}},{"detail":"void (struct SMgrRelationData **, int)","kind":12,"name":"FlushRelationsAllBuffers","range":{"end":{"character":80,"line":264},"start":{"character":0,"line":264}},"selectionRange":{"end":{"character":36,"line":264},"start":{"character":12,"line":264}}},{"detail":"void (RelFileLocator, RelFileLocator, int)","kind":12,"name":"CreateAndCopyRelationData","range":{"end":{"character":26,"line":267},"start":{"character":0,"line":265}},"selectionRange":{"end":{"character":37,"line":265},"start":{"character":12,"line":265}}},{"detail":"void (int)","kind":12,"name":"FlushDatabaseBuffers","range":{"end":{"character":42,"line":268},"start":{"character":0,"line":268}},"selectionRange":{"end":{"character":32,"line":268},"start":{"character":12,"line":268}}},{"detail":"void (struct SMgrRelationData *, ForkNumber *, int, BlockNumber *)","kind":12,"name":"DropRelationBuffers","range":{"end":{"character":47,"line":271},"start":{"character":0,"line":269}},"selectionRange":{"end":{"character":31,"line":269},"start":{"character":12,"line":269}}},{"detail":"void (struct SMgrRelationData **, int)","kind":12,"name":"DropRelationsAllBuffers","range":{"end":{"character":23,"line":273},"start":{"character":0,"line":272}},"selectionRange":{"end":{"character":35,"line":272},"start":{"character":12,"line":272}}},{"detail":"void (int)","kind":12,"name":"DropDatabaseBuffers","range":{"end":{"character":41,"line":274},"start":{"character":0,"line":274}},"selectionRange":{"end":{"character":31,"line":274},"start":{"character":12,"line":274}}},{"detail":"int (Buffer)","kind":12,"name":"BufferIsPermanent","range":{"end":{"character":44,"line":279},"start":{"character":0,"line":279}},"selectionRange":{"end":{"character":29,"line":279},"start":{"character":12,"line":279}}},{"detail":"XLogRecPtr (Buffer)","kind":12,"name":"BufferGetLSNAtomic","range":{"end":{"character":51,"line":280},"start":{"character":0,"line":280}},"selectionRange":{"end":{"character":36,"line":280},"start":{"character":18,"line":280}}},{"detail":"void (Buffer, RelFileLocator *, ForkNumber *, BlockNumber *)","kind":12,"name":"BufferGetTag","range":{"end":{"character":48,"line":286},"start":{"character":0,"line":285}},"selectionRange":{"end":{"character":24,"line":285},"start":{"character":12,"line":285}}},{"detail":"void (Buffer, int)","kind":12,"name":"MarkBufferDirtyHint","range":{"end":{"character":63,"line":288},"start":{"character":0,"line":288}},"selectionRange":{"end":{"character":31,"line":288},"start":{"character":12,"line":288}}},{"detail":"void (void)","kind":12,"name":"UnlockBuffers","range":{"end":{"character":31,"line":290},"start":{"character":0,"line":290}},"selectionRange":{"end":{"character":25,"line":290},"start":{"character":12,"line":290}}},{"detail":"void (Buffer, int)","kind":12,"name":"LockBuffer","range":{"end":{"character":47,"line":291},"start":{"character":0,"line":291}},"selectionRange":{"end":{"character":22,"line":291},"start":{"character":12,"line":291}}},{"detail":"int (Buffer)","kind":12,"name":"ConditionalLockBuffer","range":{"end":{"character":48,"line":292},"start":{"character":0,"line":292}},"selectionRange":{"end":{"character":33,"line":292},"start":{"character":12,"line":292}}},{"detail":"void (Buffer)","kind":12,"name":"LockBufferForCleanup","range":{"end":{"character":47,"line":293},"start":{"character":0,"line":293}},"selectionRange":{"end":{"character":32,"line":293},"start":{"character":12,"line":293}}},{"detail":"int (Buffer)","kind":12,"name":"ConditionalLockBufferForCleanup","range":{"end":{"character":58,"line":294},"start":{"character":0,"line":294}},"selectionRange":{"end":{"character":43,"line":294},"start":{"character":12,"line":294}}},{"detail":"int (Buffer)","kind":12,"name":"IsBufferCleanupOK","range":{"end":{"character":44,"line":295},"start":{"character":0,"line":295}},"selectionRange":{"end":{"character":29,"line":295},"start":{"character":12,"line":295}}},{"detail":"int (void)","kind":12,"name":"HoldingBufferPinThatDelaysRecovery","range":{"end":{"character":52,"line":296},"start":{"character":0,"line":296}},"selectionRange":{"end":{"character":46,"line":296},"start":{"character":12,"line":296}}},{"detail":"int (struct WritebackContext *)","kind":12,"name":"BgBufferSync","range":{"end":{"character":61,"line":298},"start":{"character":0,"line":298}},"selectionRange":{"end":{"character":24,"line":298},"start":{"character":12,"line":298}}},{"detail":"void (int *)","kind":12,"name":"LimitAdditionalPins","range":{"end":{"character":56,"line":300},"start":{"character":0,"line":300}},"selectionRange":{"end":{"character":31,"line":300},"start":{"character":12,"line":300}}},{"detail":"void (int *)","kind":12,"name":"LimitAdditionalLocalPins","range":{"end":{"character":61,"line":301},"start":{"character":0,"line":301}},"selectionRange":{"end":{"character":36,"line":301},"start":{"character":12,"line":301}}},{"detail":"int (Buffer)","kind":12,"name":"EvictUnpinnedBuffer","range":{"end":{"character":43,"line":303},"start":{"character":0,"line":303}},"selectionRange":{"end":{"character":31,"line":303},"start":{"character":12,"line":303}}},{"detail":"void (void)","kind":12,"name":"InitBufferPool","range":{"end":{"character":32,"line":306},"start":{"character":0,"line":306}},"selectionRange":{"end":{"character":26,"line":306},"start":{"character":12,"line":306}}},{"detail":"int (void)","kind":12,"name":"BufferShmemSize","range":{"end":{"character":33,"line":307},"start":{"character":0,"line":307}},"selectionRange":{"end":{"character":27,"line":307},"start":{"character":12,"line":307}}},{"detail":"void (void)","kind":12,"name":"AtProcExit_LocalBuffers","range":{"end":{"character":41,"line":310},"start":{"character":0,"line":310}},"selectionRange":{"end":{"character":35,"line":310},"start":{"character":12,"line":310}}},{"detail":"BufferAccessStrategy (BufferAccessStrategyType)","kind":12,"name":"GetAccessStrategy","range":{"end":{"character":77,"line":314},"start":{"character":0,"line":314}},"selectionRange":{"end":{"character":45,"line":314},"start":{"character":28,"line":314}}},{"detail":"BufferAccessStrategy (BufferAccessStrategyType, int)","kind":12,"name":"GetAccessStrategyWithSize","range":{"end":{"character":32,"line":316},"start":{"character":0,"line":315}},"selectionRange":{"end":{"character":53,"line":315},"start":{"character":28,"line":315}}},{"detail":"int (BufferAccessStrategy)","kind":12,"name":"GetAccessStrategyBufferCount","range":{"end":{"character":70,"line":317},"start":{"character":0,"line":317}},"selectionRange":{"end":{"character":39,"line":317},"start":{"character":11,"line":317}}},{"detail":"int (BufferAccessStrategy)","kind":12,"name":"GetAccessStrategyPinLimit","range":{"end":{"character":67,"line":318},"start":{"character":0,"line":318}},"selectionRange":{"end":{"character":36,"line":318},"start":{"character":11,"line":318}}},{"detail":"void (BufferAccessStrategy)","kind":12,"name":"FreeAccessStrategy","range":{"end":{"character":61,"line":320},"start":{"character":0,"line":320}},"selectionRange":{"end":{"character":30,"line":320},"start":{"character":12,"line":320}}},{"detail":"int (Buffer)","kind":12,"name":"BufferIsValid","range":{"end":{"character":1,"line":360},"start":{"character":0,"line":353}},"selectionRange":{"end":{"character":13,"line":354},"start":{"character":0,"line":354}}},{"detail":"Block (Buffer)","kind":12,"name":"BufferGetBlock","range":{"end":{"character":1,"line":378},"start":{"character":0,"line":369}},"selectionRange":{"end":{"character":14,"line":370},"start":{"character":0,"line":370}}},{"detail":"int (Buffer)","kind":12,"name":"BufferGetPageSize","range":{"end":{"character":1,"line":396},"start":{"character":0,"line":391}},"selectionRange":{"end":{"character":17,"line":392},"start":{"character":0,"line":392}}},{"detail":"Page (Buffer)","kind":12,"name":"BufferGetPage","range":{"end":{"character":1,"line":406},"start":{"character":0,"line":402}},"selectionRange":{"end":{"character":13,"line":403},"start":{"character":0,"line":403}}}]}

V[04:00:59.246] ASTWorker running codeAction on version 1 of /root/src/postgres/src/include/storage/bufmgr.h
I[04:00:59.246] --> reply:textDocument/codeAction(10) 4 ms
V[04:00:59.246] >>> {"id":10,"jsonrpc":"2.0","result":[]}

I[04:00:59.246] --> textDocument/clangd.fileStatus
V[04:00:59.246] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///root/src/postgres/src/include/storage/bufmgr.h"}}

System information

  • Clangd version: 18.1.3
  • Clangd extension version: 0.1.29
  • Operating system: Ubuntu 22.04

CodeZHXS avatar Oct 05 '24 03:10 CodeZHXS

Can you post verbose logs please (--log=verbose in "clangd.arguments")?

HighCommander4 avatar Oct 05 '24 03:10 HighCommander4

Can you post verbose logs please (--log=verbose in "clangd.arguments")?

Sure, I have replaced the verbose log in my description.

CodeZHXS avatar Oct 05 '24 04:10 CodeZHXS

Based on the log, standard library includes like <stdbool.h> are resolved fine.

The issue seems to be that bufmgr.h is not a self-contained file (https://github.com/clangd/clangd/issues/45). It does not directly or indirectly include (for example) <stdbool.h>, and as a result symbols defined in <stdbool.h> (such as the macro bool) are not resolved. If I add #include <stdbool.h> at the top of bufmgr.h, bool now becomes resolved.

HighCommander4 avatar Oct 06 '24 00:10 HighCommander4

Based on the log, standard library includes like <stdbool.h> are resolved fine.

The issue seems to be that bufmgr.h is not a self-contained file (clangd/clangd#45). It does not directly or indirectly include (for example) <stdbool.h>, and as a result symbols defined in <stdbool.h> (such as the macro bool) are not resolved. If I add #include <stdbool.h> at the top of bufmgr.h, bool now becomes resolved.

Manually adding header files seems a bit cumbersome. In fact, I have to frequently switch to Microsoft's c++ tools to know which header file I should import.

CodeZHXS avatar Oct 09 '24 13:10 CodeZHXS