Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clangd doesn't recognize standard headers #698

Open
CodeZHXS opened this issue Oct 5, 2024 · 4 comments
Open

Clangd doesn't recognize standard headers #698

CodeZHXS opened this issue Oct 5, 2024 · 4 comments
Labels
bug Something isn't working

Comments

@CodeZHXS
Copy link

CodeZHXS commented Oct 5, 2024

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 CodeZHXS added the bug Something isn't working label Oct 5, 2024
@HighCommander4
Copy link
Contributor

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

@CodeZHXS
Copy link
Author

CodeZHXS commented Oct 5, 2024

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

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

@CodeZHXS CodeZHXS closed this as completed Oct 5, 2024
@CodeZHXS CodeZHXS reopened this Oct 5, 2024
@HighCommander4
Copy link
Contributor

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.

@CodeZHXS
Copy link
Author

CodeZHXS commented Oct 9, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants